您当前的位置: 首页 >  leetcode

星许辰

暂无认证

  • 3浏览

    0关注

    466博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

LeetCode_排序_简单_349.两个数组的交集

星许辰 发布时间:2021-08-07 14:46:11 ,浏览量:3

目录
  • 1.题目
  • 2.思路
  • 3.代码实现(java)

1.题目

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

示例 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

2.思路

(1)排序+双指针 ① 创建一个长度为 min(nums1.length, nums2.length) 的数组 res,用来保存结果,并且对数组 nums1 和 nums2 进行排序; ② 定义变量i、j、k,其初始值均为0 ,其中 i 和 j 分别用来遍历数组 nums1 和 nums2,k 表示即将添加到数组 res 的元素下标; ③ 同时遍历数组 nums1 和 nums2: 若nums1[i] = nums2[j],且 k = 0 或 nums1[i] != res[k - 1]时,将 nums1[i] 添加到 res 中,并且指针 i 和 j 同时向后移动一位; 若nums1[i] < nums2[j],指针 i 向后移动一位; 若nums1[i] > nums2[j],指针 j 向后移动一位; ④ 遍历结束后,将数组 res 中下标为 0 ~ k - 1 的部分返回即可。

3.代码实现(java)
//思路1————排序+双指针
public int[] intersection(int[] nums1, int[] nums2) {
    int len1 = nums1.length;
    int len2 = nums2.length;
    int[] res = new int[Math.min(len1, len2)];
    //对数组nums1和nums2进行排序
    Arrays.sort(nums1);
    Arrays.sort(nums2);
    int i = 0, j = 0, k = 0;
    while (i             
关注
打赏
1665627467
查看更多评论
0.0406s