2022-02-21 「350. 两个数组的交集 II」
2022-02-21 本文已影响0人
柠香萌萌鸡
今天依旧是简单题:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/
可能是前两天做栈的题目做多了,第一反应是把2个数组排序之后压入栈后,再依次peek,如果一致就取出来存在开始准备好的数组中,如果不一致,把小的那个数pop出来,继续peek对比。
后来看了官方解法有2个,一个是利用hashmap存数字和对应次数,一个是利用双指针,和我的思路比较接近。
具体讲下双指针,两个注意点:
1.两个数组的交集,长度不会超过最短的那个数组,所以在new int[]时,长度可以设置成Math.min(nums1.length, nums2.length);
2.最后返回的时候,需要做一个复制的动作:
我开始写的是:return ans;
执行用例的时候发现了问题,我的返回结果数组长度虽然设置过了,但是没有填满的部分没有置为0,导致看起来长度仍然不够,所以这个copy就是用来填空的。