最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)LeetCode(82.移除有序鏈表中的重復項之二)

 更新時間:2021年07月17日 15:24:55   作者:Grandyang  
這篇文章主要介紹了C++實現(xiàn)LeetCode(82.移除有序鏈表中的重復項之二),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下

[LeetCode] 82. Remove Duplicates from Sorted List II 移除有序鏈表中的重復項之二

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

Example 1:

Input: 1->2->3->3->4->4->5
Output: 1->2->5

Example 2:

Input: 1->1->1->2->3
Output: 2->3

和之前那道 Remove Duplicates from Sorted List 不同的地方是這里要刪掉所有的重復項,由于鏈表開頭可能會有重復項,被刪掉的話頭指針會改變,而最終卻還需要返回鏈表的頭指針。所以需要定義一個新的節(jié)點,然后鏈上原鏈表,然后定義一個前驅指針和一個現(xiàn)指針,每當前驅指針指向新建的節(jié)點,現(xiàn)指針從下一個位置開始往下遍歷,遇到相同的則繼續(xù)往下,直到遇到不同項時,把前驅指針的next指向下面那個不同的元素。如果現(xiàn)指針遍歷的第一個元素就不相同,則把前驅指針向下移一位。代碼如下:

解法一:

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        ListNode *cur = head;
        while (cur && cur->next) {
            if (cur->val == cur->next->val) {
                cur->next = cur->next->next;
            } else {
                cur = cur->next;
            }
        }
        return head;
    }
};

同樣,我們也可以使用遞歸來做,首先判空,如果 head 為空,直接返回。然后判斷,若 head 之后的結點存在,且值相等,那么先進行一個 while 循環(huán),跳過后面所有值相等的結點,到最后一個值相等的點停下。比如對于例子2來說,head 停在第三個結點1處,然后對后面一個結點調用遞歸函數(shù),即結點2,這樣做的好處是,返回的值就完全把所有的結點1都刪掉了。若 head 之后的結點值不同,那么還是對 head 之后的結點調用遞歸函數(shù),將返回值連到 head 的后面,這樣 head 結點還是保留下來了,因為值不同嘛,最后返回 head 即可,參見代碼如下:

解法二:

class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if (!head || !head->next) return head;
        head->next = deleteDuplicates(head->next);
        return (head->val == head->next->val) ? head->next : head;
    }
};

到此這篇關于C++實現(xiàn)LeetCode(82.移除有序鏈表中的重復項之二)的文章就介紹到這了,更多相關C++實現(xiàn)移除有序鏈表中的重復項之二內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • QT實現(xiàn)貪吃蛇游戲代碼詳解

    QT實現(xiàn)貪吃蛇游戲代碼詳解

    本文主要為大家詳細介紹了在QT中實現(xiàn)貪吃蛇游戲的詳細教程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • C語言的模板與泛型編程你了解嗎

    C語言的模板與泛型編程你了解嗎

    這篇文章主要為大家詳細介紹了C語言的模板與泛型編程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C語言實現(xiàn)掃雷小游戲(擴展版)

    C語言實現(xiàn)掃雷小游戲(擴展版)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)擴展版的掃雷小游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • C++?反向迭代器模擬實現(xiàn)

    C++?反向迭代器模擬實現(xiàn)

    反向迭代器reverse_iterator是一種反向遍歷容器的迭代器,也就是從最后一個元素到第一個元素遍歷容器,本文主要介紹了C++?反向迭代器模擬實現(xiàn),感興趣的可以了解一下
    2024-01-01
  • Qt Design Studio創(chuàng)建工程的實現(xiàn)方法

    Qt Design Studio創(chuàng)建工程的實現(xiàn)方法

    Qt Design Studio它允許設計人員和開發(fā)人員使用通用的設計、開發(fā)、分析和調試工具在不同的開發(fā)平臺上共享一個項目,本文主要介紹了Qt Design Studio創(chuàng)建工程的實現(xiàn)方法,具有一定的參考價值,感興趣的可以了解一下
    2022-05-05
  • C++中的運算符和表達式

    C++中的運算符和表達式

    這篇文章主要介紹了C++中的運算符和表達式,學習使用表達式,對數(shù)據(jù)類型進行處理.詳細介紹內容需要的小伙伴可以參考下面文章相關內容
    2022-03-03
  • C++11原子操作詳解

    C++11原子操作詳解

    這篇文章主要為大家介紹了C++的原子操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Unity3D實現(xiàn)經(jīng)典小游戲Pacman

    Unity3D實現(xiàn)經(jīng)典小游戲Pacman

    這篇文章主要介紹了基于Unity3D制作一做個經(jīng)典小游戲Pacman,文中的示例代碼講解詳細,對我們學習Unity3D有一定的幫助,感興趣的小伙伴可以了解一下
    2021-12-12
  • C++的拷貝構造函數(shù)你了解嗎

    C++的拷貝構造函數(shù)你了解嗎

    這篇文章主要為大家詳細介紹了C++的拷貝構造函數(shù),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 動態(tài)數(shù)組C++實現(xiàn)方法(分享)

    動態(tài)數(shù)組C++實現(xiàn)方法(分享)

    下面小編就為大家?guī)硪黄獎討B(tài)數(shù)組C++實現(xiàn)方法(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05

最新評論

涟源市| 通渭县| 霍山县| 嘉黎县| 湖北省| 昌吉市| 楚雄市| 德阳市| 武陟县| 珠海市| 同江市| 石门县| 西青区| 咸丰县| 乾安县| 芒康县| 房产| 盐源县| 迁安市| 化州市| 灌南县| 遵义市| 福泉市| 友谊县| 和平县| 龙泉市| 井研县| 玉龙| 建宁县| 彭州市| 荣成市| 华容县| 德庆县| 徐水县| 博野县| 三门峡市| 策勒县| 板桥市| 镇江市| 乌拉特前旗| 上杭县|