• LeetCode


    链接

    350. Intersection of Two Arrays II

    题意

    给定两个数组,找出交集(注意交集中元素的次数应该和两个数组中出现的次数一致、顺序可任意)

    思路

    将两个数组排序,各设置一个指针依次遍历两个数组,若两个数组当前遍历值相等,则add到一个list中(保存答案)。
    若不同,则分情况:

    1. 数组1值小于数组2值,则向后移动数组1的指针
    2. 数组1值大于数组2值,则向后移动数组2的指针
      (这是为了找到相等的元素)
      直到有一个数组遍历完成,最后将list转为数组

    代码

    public class Solution {
        public int[] intersect(int[] nums1, int[] nums2) {
            List<Integer> list=new ArrayList<>();
            Arrays.sort(nums1);
            Arrays.sort(nums2);
            int i=0,j=0;
            while(i<nums1.length&&j<nums2.length){
                if(nums1[i]==nums2[j]){
                    list.add(nums1[i]);
                    i++;
                    j++;
                }else if(nums1[i]<nums2[j]){
                    i++;
                }else{
                    j++;
                    
                }
            }
            int[] res=new int[list.size()];
            for(int k=0;k<res.length;k++){
                res[k]=list.get(k);
            }
            return res;
        }
    }
    
  • 相关阅读:
    进制间转换的理论和实现不同
    操作DOM
    浏览器对象
    浏览器
    面向对象编程——class继承
    面向对象编程——原型继承
    js面向对象编程——创建对象
    JS面向对象编程
    js的JSON
    js标准对象——Date
  • 原文地址:https://www.cnblogs.com/zyoung/p/6891972.html
Copyright © 2020-2023  润新知