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 Arrays.copyOfRange(ans, 0, node3);

我开始写的是:return ans;

执行用例的时候发现了问题,我的返回结果数组长度虽然设置过了,但是没有填满的部分没有置为0,导致看起来长度仍然不够,所以这个copy就是用来填空的。

上一篇下一篇

猜你喜欢

热点阅读