題目描述
給定乙個整數陣列,判斷是否存在重複元素。
如果任何值在陣列**現至少兩次,函式返回 true。如果陣列中每個元素都不相同,則返回 false。
示例 1:這個題應該是比較簡單了,這裡主要的目的不只是為了稍微整理下這個題,而是藉機利用這個題,整理一些c++stl庫裡面的map和set集合的用法。輸入: [1,2,3,1]
輸出: true
示例 2:
輸入: [1,2,3,4]
輸出: false
示例 3:
輸入: [1,1,1,3,3,4,3,2,4,2]
輸出: true
這個題目前的思路有下面幾種
暴力法這個在這裡不做過多的解釋,無非就是遍歷一遍陣列,然後對於每個元素,再遍歷一遍是否有相同的,這種方法容易超時,時間複雜度是o(n^2), 空間複雜度o(1)。
for
(int i =
0; i < nums.length;
++i)
}return
false
;
排序法
這個方法是先把所有元素排序,這樣的話,如果有重複的,肯定會挨在一起,然後遍歷一遍,找是否相鄰的有一樣的元素,這個時間複雜度看排序的方法,快的話o(nlogn), 空間複雜度o(1)。
class
solution
return
false;}
};
順便又複習了一下c++的sort函式。
這個方式比雜湊的方式要快一些。
雜湊法這個方式就是用c++的map或者set集合。 因為這兩個都是不允許有重複的鍵出現的,所以遍歷一遍陣列,如果有相同的,返回false,否則,往裡面存。
class
solution
return
false;}
};
LeetCode初級演算法之陣列 加一
題目描述 題目描述 給定乙個由整數組成的非空陣列所表示的非負整數,在該數的基礎上加一。最高位數字存放在陣列的首位,陣列中每個元素只儲存單個數字。你可以假設除了整數 0 之外,這個整數不會以零開頭。示例 1 輸入 1,2,3 輸出 1,2,4 解釋 輸入陣列表示數字 123。示例 2 輸入 4,3,2...
LeetCode初級演算法之陣列 283 移動零
給定乙個陣列nums,編寫乙個函式將所有0移動到陣列的末尾,同時保持非零元素的相對順序。示例 輸入 0,1,0,3,12 輸出 1,3,12,0,0 說明 必須在原陣列上操作,不能拷貝額外的陣列。儘量減少操作次數。題目資訊 輸入 陣列 輸出 陣列 將原陣列的0都移動到後面 額外 空間o 1 時間儘量...
leetcode 初級演算法 陣列
給定乙個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 o 1 額外空間的條件下完成。示例 1 給定陣列 nums 1,1,2 函式應該返回新的長度2,並且原陣列 nums 的前兩個元素被修改為1,2...