这是我参与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; } }
- 这种解法只能说,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; } }
- 先使用sort来进行排序
- 可以看到,排序后我们只需要判断相邻的两个值是否相等即可!
- 如果有相等,直接返回true。
- 反之返回false。
四、总结
**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah