内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

【Java算法】數(shù)組合并去重算法-創(chuàng)新互聯(lián)

文章目錄
  • 刪除有序數(shù)組重復(fù)項(xiàng)
  • 刪除特定值
  • 有序數(shù)組合并
  • 鏈表去重合并算法

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名注冊(cè)網(wǎng)站空間、營(yíng)銷軟件、網(wǎng)站建設(shè)、井岡山網(wǎng)站維護(hù)、網(wǎng)站推廣。刪除有序數(shù)組重復(fù)項(xiàng)

由于數(shù)組是有序的,因此只要判斷當(dāng)前數(shù)組元素是否與下一個(gè)數(shù)組元素相等即可,如果相等,那么就繼續(xù)向后遍歷,直到遇到一個(gè)不相等的。然后我們可以將這個(gè)不相等的,覆蓋到第一個(gè)重復(fù)元素的位置處,這樣子就能在不創(chuàng)建一個(gè)臨時(shí)數(shù)組的情況下,直接在原數(shù)組進(jìn)行拷貝了。

遇到這種數(shù)組去重,刪特定值的時(shí)候,并且要求不能有新數(shù)組,那么一般可以考慮雙指針。
也就是定義兩個(gè)指針,一個(gè)slow指針,表示的是不重復(fù)元素下一次可以插入的位置,fast用于遍歷數(shù)組,找出不重復(fù)元素。

這里從下標(biāo)1開(kāi)始或者從下標(biāo)0開(kāi)始都是可以的。

public int removeDuplicates(int[] nums) {
        int n = nums.length;
        if (n == 0) {
            return 0;
        }
        int fast = 1, slow = 1;
        while (fast< n) {
            if (nums[fast] != nums[fast - 1]) {
                nums[slow] = nums[fast];
                ++slow;
            }
            ++fast;
        }
        return slow;
    }
刪除特定值

既然也是不能創(chuàng)建臨時(shí)數(shù)組,那么就要考慮把特定值給他覆蓋掉。
由于要求刪除數(shù)組中等于 val 的元素,因此輸出數(shù)組的長(zhǎng)度一定小于等于輸入數(shù)組的長(zhǎng)度,我們可以把輸出的數(shù)組直接寫在輸入數(shù)組上。可以使用雙指針:右指針fast指向當(dāng)前將要處理的元素,左指針slow指向下一個(gè)將要賦值的位置。

如果右指針指向的元素不等于 val,它一定是輸出數(shù)組的一個(gè)元素,我們就將右指針指向的元素復(fù)制到左指針位置,然后將左右指針同時(shí)右移;

如果右指針指向的元素等于 val,它不能在輸出數(shù)組里,此時(shí)左指針不動(dòng),右指針右移一位。
也就是,如果遍歷的指針(右指針)遇到的值等于val,那么直接忽略,但是如果遇到的值不是,那么就把這個(gè)值覆蓋到左指針指向的位置。

public int removeElement(int[] nums, int val) {
        int slow = 0;//雙指針 slow代表的是非val值可以插入的下一個(gè)位置
        int fast = 0;//fast用于遍歷
        int n=nums.length;
        while (fast
有序數(shù)組合并

已知兩個(gè)有序數(shù)組,其中第一個(gè)有序數(shù)組的元素個(gè)數(shù)為m,第二個(gè)有序數(shù)組的個(gè)數(shù)為n。
因此為了能在第一個(gè)數(shù)組上直接對(duì)兩個(gè)數(shù)組進(jìn)行合并,那么第一個(gè)數(shù)組的大小應(yīng)該設(shè)定為m+n,也就是合并之后的總大小。
之后,就可以開(kāi)始考慮如何把兩個(gè)數(shù)組進(jìn)行合并了。其中第一個(gè)數(shù)組的尾部的數(shù)據(jù)均為0,長(zhǎng)度為n。
大致如下
輸入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
輸出:[1,2,2,3,5,6]
解釋:需要合并 [1,2,3] 和 [2,5,6] 。
合并結(jié)果是 [1,2,2,3,5,6] ,其中斜體加粗標(biāo)注的為 nums1 中的元素。
考慮到當(dāng)前數(shù)組1的尾部有空余元素,因此可以考慮尾插法,從兩個(gè)數(shù)組的有效數(shù)據(jù)的尾部開(kāi)始遍歷,把更大的數(shù)據(jù)放在數(shù)組的尾部,這樣子就能節(jié)省一個(gè)臨時(shí)數(shù)組了。

//    public static void merge(int[] nums1, int m, int[] nums2, int n) {
//        for (int i=m,j=0;i= 0 || p2 >= 0) {
            if (p1 == -1) {
                cur = nums2[p2--];
            } else if (p2 == -1) {
                cur = nums1[p1--];
            } else if (nums1[p1] >nums2[p2]) {
                cur = nums1[p1--];
            } else {
                cur = nums2[p2--];
            }
            nums1[tail--] = cur;
        }
    }
鏈表去重合并算法

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

網(wǎng)站標(biāo)題:【Java算法】數(shù)組合并去重算法-創(chuàng)新互聯(lián)
文章來(lái)源:http://www.rwnh.cn/article26/csidcg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航虛擬主機(jī)、網(wǎng)站收錄電子商務(wù)、網(wǎng)站設(shè)計(jì)、小程序開(kāi)發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

元谋县| 游戏| 光山县| 华亭县| 凭祥市| 灌云县| 淳化县| 溆浦县| 台前县| 东源县| 东丽区| 米脂县| 德江县| 波密县| 永善县| 濮阳县| 措美县| 大足县| 日土县| 阿巴嘎旗| 从化市| 彰武县| 根河市| 连城县| 福鼎市| 双辽市| 高碑店市| 兴安县| 涞水县| 新邵县| 吉隆县| 彭水| 荥阳市| 定安县| 晋州市| 怀宁县| 元阳县| 都安| 玉溪市| 灵山县| 南和县|