217. 存在重复元素

image.png

排序后判断相邻元素是否相等

执行用时:3 ms, 在所有 Java 提交中击败了99.74% 的用户 内存消耗:41.5 MB, 在所有 Java 提交中击败了88.07% 的用户

  1. class Solution {
  2. public boolean containsDuplicate(int[] nums) {
  3. Arrays.sort(nums);
  4. for (int i = 0; i < nums.length - 1; i++) {
  5. if (nums[i] == nums[i + 1]){
  6. return true;
  7. }
  8. }
  9. return false;
  10. }
  11. }

使用 Set

执行用时:6 ms, 在所有 Java 提交中击败了54.71% 的用户 内存消耗:42.2 MB, 在所有 Java 提交中击败了63.84% 的用户

  1. class Solution {
  2. public boolean containsDuplicate(int[] nums) {
  3. Set<Integer> set = new HashSet<>();
  4. for (int num : nums) {
  5. boolean add = set.add(num);
  6. if (!add) {
  7. return true;
  8. }
  9. }
  10. return false;
  11. }
  12. }

使用 stream 流去重后长度是否与原数组长度相等

执行用时:6 ms, 在所有 Java 提交中击败了54.71% 的用户 内存消耗:45.9 MB, 在所有 Java 提交中击败了5.03% 的用户

class Solution {
    public boolean containsDuplicate(int[] nums) {
        return Arrays.stream(nums).distinct().count() != nums.length;
    }
}