演算法之路 陣列篇(02)存在重複元素

2021-10-11 04:09:27 字數 1375 閱讀 3176

給定乙個整數陣列,判斷是否存在重複元素。

如果任意一值在陣列**現至少兩次,函式返回true。如果陣列中每個元素都不相同,則返回false

輸入: [1,2,3,1]

輸出: true

輸入: [1,2,3,4]

輸出: false

三種解法,遍歷的方法這裡不提及

1排序看是否有相鄰元素

2陣列內容做輔助陣列下標

這是我在c#中常用的技巧,但是c++vector不允許下標直接擴容,所以沒有嘗試過,就是把要判斷是陣列遍歷,每個資料作為另乙個陣列的下標,給另乙個陣列這個下標的數字給個值,比如1,那麼下次哪個是1,直接返回true即可,比如【1,2,1,3】,遇到第乙個陣列1的時候,新陣列turb=1,遇到2的時候,新陣列turb=1,下次遇到1的時候,因為新陣列turb=1了已經,所以直接返回true。

3雜湊表,即使用c++map來以鍵值對的方式存數字出現的次數

1

bool containsduplicate(vector

& nums)

sort(nums.begin(

),nums.end());

for(int i=0;i)-1;i++)

}return

false

;}

2供參考,如果出現負數,則不行

bool containsduplicate(vector

& nums)

else

}return

false

;}

3

unordered_mapanswers;

for(int k: nums)

else

}

時間複雜度 : o(nlog n)

排序的複雜度是 o(n log n),掃瞄的複雜度是o(n)。整個演算法主要由排序過程決定,因此是o(nlogn)。

空間複雜度 : o(1)

這取決於具體的排序演算法實現,通常而言,使用 堆排序 的話,是 o(1)。

時間複雜度 o(n)

一次遍歷

空間複雜度o(n)

使用額外陣列

時間複雜度 ?(n)。

search() 和 insert() 各自使用 n 次,每個操作耗費常數時間。

空間複雜度 : o(n)。雜湊表占用的空間與元素數量是線性關係。

swift演算法 存在重複元素

1 描述 給定乙個整數陣列,判斷是否存在重複元素。如果任何值在陣列 現至少兩次,函式返回true。如果陣列中每個元素都不相同,則返回false。例1 輸入 1,2,3,1 輸出 true 例2 輸入 1,2,3,4 輸出 false 例3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 true...

leetcode 陣列 簡單 存在重複元素

給定乙個整數陣列,判斷是否存在重複元素。如果任意一值在陣列 現至少兩次,函式返回true。如果陣列中每個元素都不相同,則返回false 示例 1 輸入 1,2,3,1 輸出 true 示例 2 輸入 1,2,3,4 輸出 false 示例 3 輸入 1,1,1,3,3,4,3,2,4,2 輸出 tr...

LeetCode 陣列 存在重複元素 II

給定乙個整數陣列和乙個整數 k,判斷陣列中是否存在兩個不同的索引 i 和 j,使得 nums i nums j 並且 i 和 j 的差的 絕對值 至多為 k。示例 輸入 nums 1,2,3,1 k 3 輸出 true 輸入 nums 1,0,1,1 k 1 輸出 true 輸入 nums 1,2,...