#分享 【程式邏輯思維分享】LeetCode經典題目解析(Find All Duplicates in an Array)
2022年1月15日 15:40
題目:(難度:Medium)
我的思路:
(1)1 <= nums[i] <= nums.length,所以在nums當中,每個元素減1的結果一定可作為陣列的索引。
(2)將nums[abs(nums[i]) - 1]變為負數。舉例來說,在Example 1當中,當i等於0時,陣列的元素是4,4減1等於3,所以要把nums[3]變為負數,也就是-7。這麼做的用意正是方便找出重複出現的元素,因為假如4在後面又出現了,那麼一旦發現nums[3]已經是負數了,就代表4在之前已經出現過了。
程式碼:
Java:
C#:
Python:
JavaScript:
以上的程式均無使用額外空間,且時間複雜度均為O(n),符合題目要求。
佔用的記憶體空間和執行效率的比較:
歡迎各位大神也來分享自己的思路哦😊~