350. 两个数组的交集 II --力扣 --JAVA

2023-12-21 12:18:53

题目

给你两个整数数组?nums1?和?nums2?,请你以数组形式返回两数组的交集。返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致(如果出现次数不一致,则考虑取较小值)。可以不考虑输出结果的顺序。

解题思路

  1. 对两个数组进行排序整理;
  2. 从索引0开始对数组进行遍历,创建List来存储相同的数据;
  3. 元素相等则添加到List中并且索引都右移一位;
  4. 元素不相等则小的索引右移大的不变。

代码展示

class Solution {
    public int[] intersect(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        int index1 = 0;
        int index2 = 0;
        int n = nums1.length;
        int m = nums2.length;
        List<Integer> data = new ArrayList<>();
        while (index1 < n && index2 < m){
            if(nums1[index1] == nums2[index2]){
                data.add(nums1[index1]);
                index1++;
                index2++;
            } else if(nums1[index1] > nums2[index2]){
                index2++;
            } else {
                index1++;
            }
        }
        int[] ans = new int[data.size()];
        for (int i = 0; i < data.size(); i++){
            ans[i] = data.get(i);
        }
        return ans;
    }
}

文章来源:https://blog.csdn.net/qq_45794129/article/details/135124684
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。