簡體   English   中英

給定一個數組,找到一個數字,使得一個數字的值等於它出現的次數。 對此我們有什么最佳解決方案?

[英]Given an array find number such that the value of a number equals the number of times it occurs. What can we the most optimal solution for this?

我有一個 Java 分配,其中有以下問題:

給定一個數組,找到一個數字,使得一個數字的值等於它出現的次數。 任何人都可以提出最佳解決方案嗎? 我已經寫了下面的解決方案:

private static int number(int[] arr) {

    Map<Integer, Integer> map = new HashMap<>();

    for(int i=0; i<arr.length; i++) {
        map.put(arr[i], map.getOrDefault(arr[i], 0)+1);
    }

    for(int i=0; i<arr.length; i++) {
        if(map.get(arr[i]) == arr[i])
            return arr[i];
    }

    return -1;

}

您可以先在數組上循環一次以創建頻率Map ,然后檢查每個條目。

int[] arr = {1, 1, 2, 3, 2, 2, 3, 3, 4};
Map<Integer, Integer> freq = Arrays.stream(arr).boxed()
    .collect(Collectors.toMap(x -> x, x -> 1, Integer::sum));
for(Map.Entry e: freq.entrySet()){
    if(e.getValue().equals(e.getKey())) System.out.println(e.getKey());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM