LeetCode Java 刷題之 217. 存在重複元素
阿新 • • 發佈:2022-03-18
LeetCode 連結:https://leetcode-cn.com/problems/contains-duplicate/
217. 存在重複元素
難度 簡單
給你一個整數陣列 nums 。如果任一值在陣列中出現 至少兩次 ,返回 true ;如果陣列中每個元素互不相同,返回 false 。
示例 1:輸入:nums = [1,2,3,1]輸出:true
示例 2:輸入:nums = [1,2,3,4]輸出:false
示例 3:輸入:nums = [1,1,1,3,3,4,3,2,4,2]輸出:true
提示:
- 1 <= nums.length <= 105
- -109 <= nums[i] <= 109
通過次數511,166提交次數918,539
-
2022.3.18日提交如下java程式:
1 class Solution { 2 public boolean containsDuplicate(int[] nums) { 3 for (int i=0; i<=nums.length-2; i++) 4 for (int j=i+1; j<=nums.length-1;j++) 5 if(nums[i]== nums[j]) 6 returntrue; 7 return false; 8 } 9 }
編譯執行都結果正確。
提交時卻提示:
提交記錄 70 / 69 個通過測試用例 狀態:超出時間限制
估計是演算法複雜度為O(n^2),不符合題目要求, 最後一個用例的執行時間超出限制。
-
改用java自帶的sort(是quicksor排序?)先給陣列排序,然後再前後挨個比較,發現有相等,則返回true
1 import java.util.*; 2 class Solution { 3 public boolean containsDuplicate(int[] nums) {4 Arrays.sort(nums); 5 for (int i=0; i<nums.length-1; i++) 6 if(nums[i]== nums[i+1]) 7 return true; 8 return false; 9 } 10 }
執行結果:通過
執行用時:19 ms, 在所有 Java 提交中擊敗了24.01%的使用者
記憶體消耗:55.4 MB, 在所有 Java 提交中擊敗了5.08%的使用者
通過測試用例:70 / 70
修改 import java.util.*; 為 import java.util.Arrays; 後
執行結果:通過
執行用時:19 ms, 在所有 Java 提交中擊敗了24.01%的使用者
記憶體消耗:54.3 MB, 在所有 Java 提交中擊敗了16.43%的使用者
通過測試用例:70 / 70
-
下一步改進思路,自己用java寫個quicksort排序,會否改程序序的運行復雜度?