亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

更大元素的數組

更大元素的數組

狐的傳說 2022-12-21 16:38:27
我想創建一個方法來接收一個數組和一個要比較的值。它應該以數組的形式返回大于比較值的數字。例如,greaterThan([3, 4, 5, 6], 4])should return[5, 6]和greaterThan([3, 4, 5, 6], 5])should return [6]。由于數組length的result大小是動態的,每次它找到一個更大的元素時我都會增加大小。static String greaterThan(int[] vectorCompare, int valueCompare){       Arrays.sort(vectorCompare);         // make it faster    int size = 0;    int[] result = new int[size];    for (int value : vectorCompare)    {        if (valueCompare < value)        {                           size++;                     }               }    int[] resultCopy = Arrays.copyOf(result, size);    // what to do next?    return Arrays.toString(resultCopy);}對我有什么建議嗎?我想過使用ArrayList,但我有點卡住了。
查看完整描述

4 回答

?
浮云間

TA貢獻1829條經驗 獲得超4個贊

您不需要對其進行排序,只需將元素收集在一個列表中并在內容上調用 toString。如果順序很重要,您可以在之后對收集的值列表進行排序。


    static String greaterThan(int[] vector, int compare) {

        List<Integer> greater = new ArrayList<>();


        for (int i : vector) {

            if (i > compare) {

                 greater.add(i);

            }

        }


        return greater.toString();

    }


查看完整回答
反對 回復 2022-12-21
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

這是盡可能簡單的。這適用于數組。

   public static int[] greaterThan(int[] numbs, int max) { 
        return Arrays.stream(numbs).parallel().filter(a -> a > max).toArray();
   }

您也可以對列表執行相同的操作。

   public static List<Integer> greaterThan(List<Integer> numbs, int max) { 
        return numbs.parallelstream().filter(a -> a > max).collect(Collectors.toList());
   }

在這兩種情況下,列表或數組都變成了并行的值流。那些被過濾以僅允許那些大于最大的通過管道。然后將它們收集到列表或數組中并返回。此特定任務適用于多線程中的并行操作,并將加快執行速度,尤其是當您的 PC 具有多個內核時。

即使您是 Java 新手,lambda 和流也是該語言的重要特性,應該學習。


查看完整回答
反對 回復 2022-12-21
?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

在上述方法中對您的輸入進行排序實際上會使它變慢。通過正常的數組迭代和比較,您的復雜度將為 O(n),而對于排序則為 O(nlogn)。相反,你可以試試這個。


static String greaterThan(int[] vectorCompare, int valueCompare)

   {

      List<Integer> list = new ArrayList<>();

      for (int value : vectorCompare)

      {

         if (valueCompare < value)

         {

            list.add(value);

         }

      }

         return list.toString();

   }

通過使用 Arraylist,您無需擔心要返回的元素數量。


查看完整回答
反對 回復 2022-12-21
?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

可以按如下方式完成:


    List<Integer> list = new ArrayList<>();

    list.add(2);

    list.add(1);

    list.add(4);

    list.add(6);

    list.add(7);


    int valToCompare = 4;

    List<Integer> result = find(list, valToCompare);


    private static List<Integer> find(List<Integer> list, int val) {

        return list.stream().filter(v -> v > val).collect(Collectors.toList());

    }


查看完整回答
反對 回復 2022-12-21
  • 4 回答
  • 0 關注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號