在leetcode(https://leetcode-cn。com/)上看到一道有趣的演算法題:
在大小為 2N 的陣列 A 中有 N+1 個不同的元素,其中有一個元素重複了 N 次。
返回重複了 N 次的那個元素。
示例 1:
輸入:[1,2,3,3]
輸出:3
示例 2:
輸入:[2,1,2,5,3,2]
輸出:2
示例 3:
輸入:[5,1,5,2,5,3,5,4]
輸出:5
提示:
4 <= A。length <= 10000
0 <= A[i] < 10000
A。length 為偶數
這樣的題你會怎麼用java實現呢?
分享一下我的解題思路:
public int repeatedNTimes(int[] A) { Arrays。sort(A); int left = 0; int right = A。length - 1; while (left < right) { if (A[left] == A[left + 1]) { return A[left]; } else if (A[right] == A[right - 1]) { return A[right]; } left++; right——; } return 0; }
結果:
輸入:[1,2,3,3]
輸出:3
leetcode上對該答案的分析如下:
102 / 102
個透過測試用例
狀態:
透過
執行用時:
7 ms
, 在所有 Java 提交中擊敗了35。06%的使用者
記憶體消耗:
39.5 MB
, 在所有 Java 提交中擊敗了54。49%的使用者
執行用時分佈圖表
執行消耗記憶體分佈圖表
大家有更好的解題思路嗎?歡迎在評論區作答哈~