1. 程式人生 > 其它 >LeetCode Java 刷題之 217. 存在重複元素

LeetCode Java 刷題之 217. 存在重複元素

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                     return
true; 7 return false; 8 } 9 }

編譯執行都結果正確。

提交時卻提示:

提交記錄
70 / 69 個通過測試用例
狀態:超出時間限制

估計是演算法複雜度為On^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排序,會否改程序序的運行復雜度?