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 个通过测试用例 状态:超出时间限制
估计是算法复杂度为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排序,会否改进程序的运行复杂度?
浙公网安备 33010602011771号