zoukankan      html  css  js  c++  java
  • LeetCode算法题详解之两个数组的交集

    题目背景:

    这个与我们高中时期学习的交集是一样的,顺便复习一下相关的数学知识有助于更好的理解。

    交集的定义:

    对于两个集合A和B,定义A和B的交集为C,其中C={x|x属于A且X属于B},记作A∩B。

    如图所示:

     解题思路一:

    public int[] intersect(int[] nums1, int[] nums2) {
            
             Arrays.sort(nums1);
             Arrays.sort(nums2);
             
             List<Integer> tmp = new ArrayList<Integer>();
             int i = 0;
             int j = 0;
             
             while(i<nums1.length && j < nums2.length) {
                 
                 if(nums2[j]>nums1[i]) {
                     i++;
                 }else if(nums2[j] < nums1[i]) {
                     j++;
                 }else {
                     tmp.add(nums1[i]);
                     i++;
                     j++;
                 }
                 
             }
             
             int[] result = new int[tmp.size()];
             
             for(int k = 0;k<result.length;k++) {
                 result[k] = tmp.get(k);
             }
             
             return result;
             
             
         }

    解题思路二:

     public int[] intersect(int[] nums1, int[] nums2) {
            
            List<Integer> tmp = new ArrayList<Integer>();
            
            Map<Integer,Integer> map = new HashMap<Integer,Integer>();
            
            for(int i = 0;i<nums1.length;i++) {
                Integer value = map.get(nums1[i]);
                map.put(nums1[i], (value == null ? 0:value)+1);
            }
            
            for(int i = 0;i<nums2.length;i++) {
                
                if(map.containsKey(nums2[i]) && map.get(nums2[i]) != 0){
                    tmp.add(nums2[i]);
                    map.put(nums2[i], map.get(nums2[i]) - 1);
                }
            }
            
            int[] result = new int[tmp.size()];
            int i = 0;
            for(Integer e:tmp)
                result[i++] = e;
            return result;
                 
             
         }
  • 相关阅读:
    Trapping Rain Water
    Construct Binary Tree from Preorder and Inorder Traversal
    Flatten Binary Tree to Linked List
    Permutations II
    Unique Paths II
    Path Sum II
    Unique Binary Search Trees II
    evdev module-----uinput.py
    evdev module-----events.py
    evdev module-----device.py
  • 原文地址:https://www.cnblogs.com/youcong/p/10326674.html
Copyright © 2011-2022 走看看