存在重复元素 | LeetCode刷题笔记

349 阅读2分钟

这是我参与8月更文挑战的第19天,活动详情查看:8月更文挑战


相关文章

LeetCode刷题汇总:LeetCode刷题

一、题目描述


存在重复元素

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

如果存在一值在数组中出现至少两次,函数返回 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
    
  • 充分利用set不可重复的特性来解决这个问题。
  • 循环遍历所有的字符,一直放入set集合中。
  • 如果数字已经存在于 set 中,直接返回 true。如果成功遍历完数组,则表示没有重复元素,返回 false

三、AC 代码


  • set解法:

    class Solution {
        public boolean containsDuplicate(int[] nums) {
          return Arrays.stream(nums).distinct().toArray().length==nums.length?false:true;
        }
    }
    
    • image-20210819132810740.png
    • 这种解法只能说,jdk1.8的stream流yyds!
  • 排序左右破解法:

    class Solution {
        public boolean containsDuplicate(int[] nums) {
            Arrays.sort(nums);
            for (int i = 0; i < nums.length - 1; i++) {
                if (nums[i] == nums[i + 1]) {
                    return true;
                }
            }
            return false;
        }
    }
    
    • image-20210819114559504.png
    • 先使用sort来进行排序
    • image-20210819114936425.png
    • 可以看到,排序后我们只需要判断相邻的两个值是否相等即可!
    • 如果有相等,直接返回true。
    • 反之返回false。

四、总结

  • 解题思路千千万,不管是本办法还好,还是奇思妙想的解法,能解决就是好办法!白猫黑猫能抓老鼠的猫就是好猫!
  • 这里列几个LeetCode的其他大神的解法作为参考!
  • 点击跳转:官方解法
  • 点击跳转:炫技解法

**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah