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

c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素

 更新時(shí)間:2023年12月06日 11:22:48   作者:吳尼瑪  
這篇文章主要為大家介紹了c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目

給出一個(gè)升序排序的鏈表,刪除鏈表中的所有重復(fù)出現(xiàn)的元素,只保留原鏈表中只出現(xiàn)一次的元素。

例如:

給出的鏈表為1→2→3→3→4→4→5, 返回1→2→5。

給出的鏈表為1→1→1→2→3, 返回2→3。

數(shù)據(jù)范圍:鏈表長(zhǎng)度0≤n≤10000,鏈表中的值滿足∣val∣≤1000

要求:空間復(fù)雜度O(n),時(shí)間復(fù)雜度O(n)

進(jìn)階:空間復(fù)雜度O(1),時(shí)間復(fù)雜度O(n)

示例

示例1

輸入:
{1,2,2}
返回值:
{1}

示例2

輸入:
{}
返回值:
{}

思路

因?yàn)槭巧虻逆湵恚貜?fù)的元素時(shí)連在一起的,所以可以連續(xù)的跳過相同的節(jié)點(diǎn)。

這里有個(gè)小技巧:因?yàn)殒湵碛锌赡芮皫讉€(gè)元素就是重復(fù)的,這時(shí)就需要?jiǎng)h除頭指針了,所以我們需要給鏈表增加一個(gè)自定義的表頭,以方便后面刪除了原來的頭指針而找不到表頭,還有需要注意的就是在返回的時(shí)候要去掉增加的表頭。

這種解法的空間復(fù)雜度是O(1),另外也可以通過哈希表unordered_map來記錄每個(gè)節(jié)點(diǎn)值出現(xiàn)的次數(shù)來解決這個(gè)問題。哈希表的方式空間復(fù)雜度就是O(n)了,如果鏈表的無序的,則哈希表的解決方法更通用。

解答代碼

/**
 * struct ListNode {
 *    int val;
 *    struct ListNode *next;
 *    ListNode(int x) : val(x), next(nullptr) {}
 * };
 */
class Solution {
public:
    /**
     * @param head ListNode類 
     * @return ListNode類
     */
    ListNode* deleteDuplicates(ListNode* head) {
        // write code here
        if (head == nullptr) {
            return nullptr;
        }
        // 給鏈表增加一個(gè)表頭,以便可以刪除原鏈表的頭結(jié)點(diǎn)。
        auto res = new ListNode(0);
        res->next = head;
        auto cur = res;
        while (cur->next != nullptr && cur->next->next != nullptr) {
            if (cur->next->val == cur->next->next->val) {
                int val = cur->next->val;
                // 跳過所有相同的值
                while (cur->next != nullptr && cur->next->val == val) {
                    cur->next = cur->next->next;
                }
            } else {
                cur = cur->next;
            }
        }
        // 返回值需要去掉增加的表頭
        return res->next;
    }
};

以上就是c++算法進(jìn)階刪除有序鏈表中的重復(fù)元素的詳細(xì)內(nèi)容,更多關(guān)于c++刪除有序鏈表重復(fù)元素的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++ STL 四種智能指針的用法詳解

    C++ STL 四種智能指針的用法詳解

    C++ 標(biāo)準(zhǔn)模板庫(kù) STL(Standard Template Library) 一共給我們提供了四種智能指針:auto_ptr、unique_ptr、shared_ptr 和 weak_ptr,今天給大家詳細(xì)介紹這幾種指針的具體用法,需要的朋友參考下吧
    2021-06-06
  • C++ 整數(shù)拆分方法詳解

    C++ 整數(shù)拆分方法詳解

    整數(shù)拆分,指把一個(gè)整數(shù)分解成若干個(gè)整數(shù)的和。本文重點(diǎn)給大家介紹C++ 整數(shù)拆分方法詳解,非常不錯(cuò),感興趣的朋友一起學(xué)習(xí)吧
    2016-08-08
  • Qt6.0+vs2019環(huán)境配置的實(shí)現(xiàn)教程

    Qt6.0+vs2019環(huán)境配置的實(shí)現(xiàn)教程

    這篇文章主要介紹了Qt6.0+vs2019環(huán)境配置的實(shí)現(xiàn)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • C語言實(shí)現(xiàn)掃雷OvO(完整代碼)

    C語言實(shí)現(xiàn)掃雷OvO(完整代碼)

    相信大家都玩過掃雷游戲,因?yàn)樗?jīng)典了,今天我們用C語言來模擬實(shí)現(xiàn)掃雷游戲,結(jié)合示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2022-04-04
  • C語言采用文本方式和二進(jìn)制方式打開文件的區(qū)別分析

    C語言采用文本方式和二進(jìn)制方式打開文件的區(qū)別分析

    這篇文章主要介紹了C語言采用文本方式和二進(jìn)制方式打開文件的區(qū)別分析,有助于讀者更好的理解文本文件與二進(jìn)制文件的原理,需要的朋友可以參考下
    2014-07-07
  • C++中的RAII機(jī)制詳解

    C++中的RAII機(jī)制詳解

    這篇文章主要介紹了C++中的RAII機(jī)制詳解,RAII是Resource Acquisition Is Initialization的簡(jiǎn)稱,是C++語言的一種管理資源、避免泄漏的慣用法,需要的朋友可以參考下
    2014-09-09
  • C++類與對(duì)象之日期類的實(shí)現(xiàn)

    C++類與對(duì)象之日期類的實(shí)現(xiàn)

    這篇文章主要介紹如何實(shí)現(xiàn)C++中的日期類相關(guān)資料,需要的朋友可以參考下面文章的具體內(nèi)容
    2021-09-09
  • C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記

    C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記

    在本篇文章里小編給大家整理的是一篇關(guān)于C++中隱式類型轉(zhuǎn)換學(xué)習(xí)筆記內(nèi)容,有興趣的跟著小編來學(xué)習(xí)下吧。
    2020-02-02
  • C++廣播通信實(shí)例

    C++廣播通信實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)廣播通信的方法,實(shí)例講述了C++ socket廣播通信的原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • 詳解C++標(biāo)準(zhǔn)庫(kù)中處理正則表達(dá)式的類std::regex

    詳解C++標(biāo)準(zhǔn)庫(kù)中處理正則表達(dá)式的類std::regex

    std?是?C++?標(biāo)準(zhǔn)庫(kù)的命名空間,包含了大量標(biāo)準(zhǔn)的?C++?類、函數(shù)和對(duì)象,這些類和函數(shù)提供了廣泛的功能,包括輸入輸出、容器、算法、字符串處理等,這篇文章主要介紹了C++標(biāo)準(zhǔn)庫(kù)中提供的用于處理正則表達(dá)式的類std::regex,需要的朋友可以參考下
    2024-03-03

最新評(píng)論

泸水县| 桂东县| 福建省| 浪卡子县| 静乐县| 祁连县| 广东省| 文登市| 金山区| 泸州市| 济阳县| 铜山县| 玉屏| 德化县| 汪清县| 天峨县| 札达县| 西宁市| 喜德县| 娄烦县| 介休市| 蒙阴县| 新乡县| 永泰县| 榆林市| 新建县| 南漳县| 长春市| 琼结县| 邵东县| 桐乡市| 涿州市| 通许县| 莎车县| 丹巴县| 策勒县| 钟山县| 石城县| 青神县| 丰台区| 紫金县|