簡體   English   中英

數組中的重復 - 可以在o(n)中求解?

[英]Duplicates in array - possible to solve in o(n)?

我創建了一個代碼來檢測數組中的重復項,我認為沒有比這更快的算法:

import java.util.HashSet;
import java.util.Set;

    public class Dupe
    {
        public static void main (String[] args)
        {
            int[] myArray = {1, 2, 2, 3, 1, 4, 5, 6, 7, 4};
            Set<Integer> set = new HashSet<>();

            for (int a : myArray)
            {
                if (!set.add(a))
                {
                    System.out.println(a);
                }
            }
        }
    }

它在O(n)中。 是否也可以在o(n)中解決這個問題?

當然沒有,因為你必須至少經歷一次數組,而你正在做。 因此,為了檢查你是否有重復,你將在O(n) ° F(n) (可以是+* )中進行,所以只剩下你要確保你沒有增加速度,所以你需要最小化F(n) 檢查Set是否有東西是O(1)所以你留下了O(n) ,就是這樣。

暫無
暫無

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

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