给你两个整数数组 nums1 和 nums2 ,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intersection-of-two-arrays-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路:排序+双指针
class Solution {public int[] intersect(int[] nums1, int[] nums2) {int n = Math.min(nums1.length,nums2.length);int[] arr = new int[n];Arrays.sort(nums1);Arrays.sort(nums2);int i = 0;int j = 0;int k = 0;while(i<nums1.length&&j<nums2.length){if(nums1[i]==nums2[j]){arr[k] = nums1[i];k++;i++;j++;}else if(i<nums1.length&&j<nums2.length&&nums1[i]>nums2[j]){j++;}else{i++;}}return Arrays.copyOfRange(arr, 0, k);/* int[] res = new int[k];for(int p = 0;p<k;p++){res[p] = arr[p];}return res; */}
}
1.复制数组方法
Arrays.copyOfRange(int [] arr,int from,int to),arr为int型数组,from为开始角标值,to为终止角标值。(其中包括from角标,不包括to角标。即处于[from,to)状态)