zoukankan      html  css  js  c++  java
  • 刷题-Leetcode-217. 存在重复元素

    217. 存在重复元素

    题目链接
    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/contains-duplicate/

    题目描述

    给定一个整数数组,判断是否存在重复元素。

    如果存在一值在数组中出现至少两次,函数返回 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 

    题目分析


    更推荐第二种方法,一般情况下空间足够,主要是要降低时间复杂度。

     1 class Solution {
     2     public boolean containsDuplicate(int[] nums) {
     3         //检测重复
     4         //set 元素唯一
     5         //dictionary(java:HashMap) 每个元素出现次数
     6 
     7         //1.排序法
     8         // if(nums.length==0||nums==null){
     9         //     return false;
    10         // }
    11         // Arrays.sort(nums);//排序最优时间O(nlogn) 空间o(1)
    12         // int prev = nums[0];
    13         // for(int i=1;i<nums.length;i++){
    14         //     if(prev==nums[i]){
    15         //         return true;
    16         //     }else{
    17         //         prev = nums[i];
    18         //     }
    19         // }
    20         // return false;
    21 
    22         //2.set法 比较数组和set大小,相等为false  时间o(n) 空间o(n)
    23         // if(nums.length==0||nums==null){
    24         //     return false;
    25         // }
    26         // HashSet<Integer> set = new HashSet<>();
    27         // for(int num:nums){
    28         //     set.add(num);
    29         // }
    30         // return set.size()==nums.length?false:true;
    31 
    32 
    33 
    34         // //3.字典法(HashMap) 计算元素出现的次数 遍历value有>=1为true 空间o(n)
    35         if(nums.length==0||nums==null){
    36             return false;
    37         }       
    38         HashMap<Integer,Integer> map = new HashMap<>();
    39         for(int num:nums){
    40             if(!map.containsKey(num)){
    41                 map.put(num,1);
    42             }else{
    43                 map.put(num,map.get(num)+1);
    44             }   
    45         }
    46         for(int k:map.keySet()){
    47             if(map.get(k)>1){
    48                 return true;
    49             }
    50         }
    51         return false;
    52     }
    53 }

     

  • 相关阅读:
    构建之法阅读笔记04
    学习进度条10
    描绘用户场景并将典型用户和用户场景描述
    学习进度条09
    构建之法阅读笔记03
    学习进度条08
    每日站立会议10(完成)
    每日站立会议09
    团队成员细节工作项估计
    JS实现全选、不选、反选
  • 原文地址:https://www.cnblogs.com/dul843/p/14266872.html
Copyright © 2011-2022 走看看