成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

leetcode349. Intersection of Two Arrays

only_do / 483人閱讀

摘要:題目要求找出兩個(gè)無(wú)序數(shù)組中重合的值。先將兩個(gè)數(shù)組分別排序,排序完成之后再用兩個(gè)指針?lè)謩e比較兩個(gè)數(shù)組的值。如果兩個(gè)指針指向的值相同,則向結(jié)果集中添加該元素并且同時(shí)將兩個(gè)指針向前推進(jìn)。答案是為其中一個(gè)數(shù)組通過(guò)建立索引的方式排序。

題目要求
Given two arrays, write a function to compute their intersection.

Example:
Given nums1 = [1, 2, 2, 1], nums2 = [2, 2], return [2].

Note:
Each element in the result must be unique.
The result can be in any order.

找出兩個(gè)無(wú)序數(shù)組中重合的值。

思路一:排序

思路一模仿了歸并排序的merge部分。先將兩個(gè)數(shù)組分別排序,排序完成之后再用兩個(gè)指針?lè)謩e比較兩個(gè)數(shù)組的值。如果兩個(gè)指針指向的值相同,則向結(jié)果集中添加該元素并且同時(shí)將兩個(gè)指針向前推進(jìn)。否則指向的值較小的那個(gè)指針向前推進(jìn)。

    public int[] intersection(int[] nums1, int[] nums2) {
        Arrays.sort(nums1);
        Arrays.sort(nums2);
        List nums3 = new ArrayList();
            int i=0, j=0;
        while(inums2[j])
                j++;
            else
                i++;
        }
        int[] arr = new int[nums3.size()];
        for(int k=0;k

受排序算法影響,該方法的時(shí)間復(fù)雜度為O(nlgn)

思路二:建立索引

一方面排序?qū)r(shí)間的消耗很大,另一方面數(shù)組中如果出現(xiàn)重復(fù)的值,也意味著大量無(wú)效的遍歷。那么如何才能夠在不便利的情況下獲取二者的重合值。答案是為其中一個(gè)數(shù)組通過(guò)建立索引的方式排序。
什么叫建立索引的方式排序?這是指先獲取數(shù)組中的最大值max和最小值min,然后將整數(shù)數(shù)組轉(zhuǎn)化為一個(gè)長(zhǎng)度為max-min+1的布爾型數(shù)組,布爾型數(shù)組i位置上的值代表原整數(shù)數(shù)組中是否存在數(shù)組i+min。如[1,6,7,0]對(duì)應(yīng)的布爾型數(shù)組為[true,true,false,false,false,false,true,true]。這實(shí)際上是一種空間換時(shí)間的做法。通過(guò)這種方式,我們就可以在O(n)的時(shí)間復(fù)雜度內(nèi)完成搜索。

    public int[] intersection2(int[] nums1, int[] nums2){
        if(nums1==null || nums2==null || nums1.length == 0 || nums2.length == 0){
            return new int[0];
        }
        int max = nums1[0], min = nums1[0];
        for(int n : nums1){
            if(n > max) max = n;
            else if(n < min) min = n;
        }
        
        boolean[] index = new boolean[max - min + 1];
        for(int n : nums1){
            index[n - min] = true;
        }
        
        int count = 0;
        int[] tmp = new int[Math.min(nums1.length, nums2.length)];
        for(int n : nums2){
            if(n>=min && n<=max && index[n-min]){
                tmp[count++] = n;
                index[n-min] =false;
            }
        }
        return count == tmp.length ? tmp : Arrays.copyOf(tmp, count);
    }


想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/71533.html

相關(guān)文章

  • LeetCode 349. Intersection of Two Arrays

    摘要:描述給定兩個(gè)數(shù)組,編寫(xiě)一個(gè)函數(shù)來(lái)計(jì)算它們的交集。示例輸入輸出示例輸入輸出說(shuō)明輸出結(jié)果中的每個(gè)元素一定是唯一的。我們可以不考慮輸出結(jié)果的順序。思路內(nèi)置集合可以完成交運(yùn)算,然后再轉(zhuǎn)換為即可。何睿何睿內(nèi)置集合運(yùn)算源代碼文件在這里。 Description Given two arrays, write a function to compute their intersection. Exa...

    RyanQ 評(píng)論0 收藏0
  • Leetcode PHP題解--D72 349. Intersection of Two Array

    摘要:題目鏈接題目分析返回給定兩個(gè)數(shù)組的交集。思路這既然不是自己實(shí)現(xiàn)的話,直接用就完事了。最終代碼若覺(jué)得本文章對(duì)你有用,歡迎用愛(ài)發(fā)電資助。 D72 349. Intersection of Two Arrays 題目鏈接 349. Intersection of Two Arrays 題目分析 返回給定兩個(gè)數(shù)組的交集。 思路 這既然不是自己實(shí)現(xiàn)的話,直接用array_intersect就完事...

    sixleaves 評(píng)論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡(jiǎn)單難度攻略已經(jīng)到題,所以后面會(huì)調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時(shí),攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚(yú)有什么區(qū)別...

    tain335 評(píng)論0 收藏0
  • 前端 | 每天一個(gè) LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...

    張漢慶 評(píng)論0 收藏0
  • [LintCode/LeetCode] Intersection of Two Arrays I &

    摘要:先想到的是,其實(shí)也可以,只是需要在遍歷的時(shí)候,添加到數(shù)組中的數(shù)要掉,略微麻煩了一點(diǎn)。在里跑的時(shí)候,也要快一點(diǎn)。另一種類似做法的就快的多了。如果是找出所有包括重復(fù)的截距呢 Problem Given two arrays, write a function to compute their intersection. Notice Each element in the result m...

    enda 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<