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排序,会否改进程序的运行复杂度?

posted @ 2022-03-18 14:07  blues667  阅读(132)  评论(0)    收藏  举报