給定乙個整數陣列 a,其中1 ≤ a[i] ≤ n (n為陣列長度), 其中有些元素出現兩次而其他元素出現一次。
找到所有出現兩次的元素。
你可以不用到任何額外空間並在o(n)時間複雜度內解決這個問題嗎?
輸入:
[4,3,2,7,8,2,3,1]
輸出:[2,3]
實現1
先進行排序,然後使用雙指標判斷
邊界情況要注意,輸入為空陣列、乙個元素的陣列情況
def find_duplicates(nums):
"""排序 然後雙指標驗證
"""duplicate_num =
nums_len = len(nums)
pre_pointer = 0
rear_pointer = 1
nums.sort()
while(pre_pointer <= nums_len-2 and nums_len != 0 and nums_len != 1):
if nums[pre_pointer] == nums[rear_pointer]:
pre_pointer += 2
rear_pointer += 2
else:
pre_pointer += 1
rear_pointer += 1
return duplicate_num
test_nums = [1, 2, 3, 3, 4]
find_duplicates(test_nums)
刷題(leetcode陣列相關)
1.兩數之和 給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。你可以假設每種輸入只會對應乙個答案。但是,你不能重複利用這個陣列中同樣的元素。思路一.遍歷陣列中的每個數,與它後面每個數相加的結果是否等於target var t...
leetcode刷題 陣列 陣列的度
給定乙個非空且只包含非負數的整數陣列 nums,陣列的度的定義是指數組裡任一元素出現頻數的最大值。你的任務是找到與 nums 擁有相同大小的度的最短連續子陣列,返回其長度。示例 1 輸入 1,2,2,3,1 輸出 2 解釋 輸入陣列的度是2,因為元素1和2的出現頻數最大,均為2.連續子陣列裡面擁有相...
Leetcode刷題筆記(C ) 陣列
給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2,1 輸出 4,3,...