LeetCode初級演算法之陣列 存在重複

2021-09-29 20:35:45 字數 1013 閱讀 4530

題目描述

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

如果任何值在陣列**現至少兩次,函式返回 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

這個題應該是比較簡單了,這裡主要的目的不只是為了稍微整理下這個題,而是藉機利用這個題,整理一些c++stl庫裡面的map和set集合的用法。

這個題目前的思路有下面幾種

暴力法這個在這裡不做過多的解釋,無非就是遍歷一遍陣列,然後對於每個元素,再遍歷一遍是否有相同的,這種方法容易超時,時間複雜度是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...