LeetCode刷题记录Java算法提高之LeetCode刷题

LeetCode 217. 存在重复元素

2019-08-22  本文已影响3人  TheKey_

217. 存在重复元素

给定两个数组,编写一个函数来计算它们的交集。

示例1:
输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2]
示例2:
输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [9,4]
说明:

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays/
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

  1. 首先对数组进行排序
  2. 遍历数组,判断数组当前元素的值和后一个值是否相等,如果相等,那么肯定存在重复元素,否则不存在
public static 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;
    }

复杂度分析:

思路:

  1. 创建一个set集合
  2. 遍历数组,判断set中是否包含该元素,如果包含,则return true, 否则将元素添加到 set 中
public static boolean containsDuplicate(int[] nums) {
        Set<Integer> set = new HashSet<>();
        for (int num : nums) {
            if (set.contains(num)) return true;
            else set.add(num);
        }
        return false;
    }

复杂度分析:

 public static void main(String[] args) {
         int[] nums = {1,1,1,3,3,4,3,2,4,2};
         System.out.println(Arrays.toString(nums));
         System.out.println(containsDuplicate2(nums));
    }
[1, 1, 1, 3, 3, 4, 3, 2, 4, 2]
true

上一篇下一篇

猜你喜欢

热点阅读