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;
                 
             
         }
  • 相关阅读:
    【转】漫谈linux文件IO--io流程讲的很清楚
    iostat命令
    【转】ATA Secure Erase
    同步IO和异步IO
    fio2.1.10--README
    【转】地址空间、内核空间、IO地址空间
    博客收藏--sailing的博客
    Cosmos OpenSSD架构分析--HOST interface(未完)
    nginx 过滤zip 类型的文件
    freeswitch GUI界面(portal)
  • 原文地址:https://www.cnblogs.com/youcong/p/10326674.html
Copyright © 2011-2022 走看看