目录
1.题目
- 1.题目
- 2.思路
- 3.代码实现(java)
给定两个数组,编写一个函数来计算它们的交集。
示例 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
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?