可視化圖解算法:刪除有序(排序)鏈表中重復的元素

1. 題目

描述

刪除給出鏈表中的重復元素(鏈表中元素從小到大有序),使鏈表中的所有元素都只出現一次 例如: 給出的鏈表為1→1→2,返回1→2. 給出的鏈表為1→1→2→3→3返回1→2→3.

數據范圍:鏈表長度滿足 0≤n≤1000 ,鏈表中任意節點的值滿足 ∣val∣≤100

進階:空間復雜度 O(1),時間復雜度 O(n)

示例1

輸入:

{1,1,2}

返回值:

{1,2}

示例2

輸入:

{}

返回值:

{}

2. 解題思路

本題是:刪除有序鏈表中重復的元素,即重復的元素需要保留一個,同時限定了鏈表是有序的(這樣只需要比較相鄰的元素值)。

這時可以通過一個操作指針變量cur就可以完成題目的要求。

假如有序鏈表如下圖所示:

步驟一:定義操作節點指針變量。

步驟二:循環刪除鏈表重復節點。

  • 當前節點與下個節點值相同,刪除下一個節點

    cur對應的節點值1與它的下一個節點值1相同,則刪除下一個節點(更改cur的指針域: cur.next = cur.next.next)。之后再將cur移動到下一個節點(2節點)便于后序的操作。

????????????????

  • 節點值不相同,移動指針變量cur

    cur指向節點2與下一個節點值3不相同,則將cur移動到一個節點(3節點)。

????????????????

如果cur對應的下一個節點為Null,就沒有必要再比較了(已經是空節點了),循環退出。

步驟三: 返回頭結點。

處理之后的鏈表頭結點與原鏈表頭結點相同,直接返回原鏈表頭節點即可。

如果文字描述的不太清楚,你可以參考視頻的詳細講解。

  • Python版本:數據結構筆試面試算法-Python語言版_嗶哩嗶哩_bilibili數據結構筆試面試算法-Python語言版,bilibili課堂,嗶哩嗶哩課堂,嗶哩嗶哩,Bilibili,B站,彈幕https://www.bilibili.com/cheese/play/ep1370402

  • Java版本:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1366846

  • Golang版本:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1364603

3. 編碼實現

核心偽代碼如下:

函數 deleteDuplicates(頭節點 head):如果 head 為空:返回 head// 1. 定義操作節點指針變量當前節點 cur ← head// 2.  循環刪除鏈表重復節點當 cur的下一個節點 不為空 時://2.1 當前節點與下個節點值相同,刪除下一個節點如果 cur的值 等于 cur.next的值:cur的下一個節點 ← cur.next的下一個節點//2.2 節點值不相同,才移動指針變量否則:cur ← cur.next// 3. 返回頭結點返回 head

具體完整代碼你可以參考下面視頻的詳細講解。

  • Python版本:數據結構筆試面試算法-Python語言版_嗶哩嗶哩_bilibili數據結構筆試面試算法-Python語言版,bilibili課堂,嗶哩嗶哩課堂,嗶哩嗶哩,Bilibili,B站,彈幕https://www.bilibili.com/cheese/play/ep1370402

  • Java版本:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1366846

  • Golang版本:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1364603

4.小結

刪除有序鏈表中重復的元素(重復的元素需要保留一個),可以通過以下步驟完成:(1)定義操作節點指針變量;(2)循環刪除鏈表重復節點;(3)返回頭結點。


《數據結構與算法》深度精講課程正式上線啦!七大核心算法模塊全解析:

? 鏈表 ? 二叉樹 ?二分查找、排序 ? 堆、棧、隊列 ?回溯算法 ? 哈希算法 ? 動態規劃

無論你是備戰筆試面試、提升代碼效率,還是突破技術瓶頸,這套課程都將為你構建扎實的算法思維底座。🔥立即加入學習打卡,與千名開發者共同進階!

  • Python編碼實現:數據結構筆試面試算法-Python語言版_嗶哩嗶哩_bilibili數據結構筆試面試算法-Python語言版,bilibili課堂,嗶哩嗶哩課堂,嗶哩嗶哩,Bilibili,B站,彈幕https://www.bilibili.com/cheese/play/ep1509965

  • Java編碼實現:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1510007

  • Golang編碼實現:嗶哩嗶哩_bilibilihttps://www.bilibili.com/cheese/play/ep1509945

對于鏈表的相關操作,我們總結了一套【可視化+圖解】方法,依據此方法來解決鏈表相關問題,鏈表操作變得易于理解,寫出來的代碼可讀性高也不容易出錯。具體也可以參考視頻詳細講解。

今日佳句:春風得意馬蹄疾,一日看盡長安花。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/899031.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/899031.shtml
英文地址,請注明出處:http://en.pswp.cn/news/899031.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ETL:數據清洗、規范化和聚合的重要性

在當今這個數據呈爆炸式增長的時代,數據已成為企業最為寶貴的資產之一。然而,數據的海量增長也伴隨著諸多問題,如數據來源多樣、結構復雜以及質量問題等,這些問題嚴重阻礙了數據的有效處理與深度分析。在此背景下,ETL&…

spring boot jwt生成token

1、引入jwt依賴 <!--jwt的依賴--> <dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.18.3</version> </dependency> 2、創建TokenUtils工具類 package com.pn.utils;import com.…

豪越科技:融合低空經濟的消防一體化安全管控解決方案

在科技飛速發展的當下&#xff0c;2025 年低空經濟正處于規模化商用的關鍵節點&#xff0c;其在應急救援、物流配送等多領域展現出巨大潛力。豪越科技憑借其先進的消防一體化安全管控方案&#xff0c;與低空經濟深度融合&#xff0c;打造出一套更為高效、智能的消防解決方案&am…

清華大學 | DeepSeek第十版!《DeepSeek政務應用場景及解決方案》

清華大學發布的《DeepSeek政務應用場景及解決方案》研究報告&#xff0c;聚焦人工智能技術DeepSeek在政府治理與公共服務中的創新實踐&#xff0c;系統闡述了其如何通過智能化技術賦能政務數字化轉型&#xff0c;推動治理能力現代化。報告指出&#xff0c;DeepSeek作為融合大數…

R語言雙Y軸折線圖+相關性注釋

目錄 包和數據 作圖代碼及詳解 包和數據 rm(list ls()) library(ggpubr) library(scales) library(ggplot2)data <- iris##鳶尾花數據集 data1 <- data[1:30,c(1,2,3)] > head(data1)Sepal.Length Sepal.Width Petal.Length 1 5.1 3.5 …

Android Compose 框架隱式動畫之過渡動畫深入剖析(二十六)

Android Compose 框架隱式動畫之過渡動畫深入剖析 一、引言 在移動應用開發領域&#xff0c;用戶體驗始終是至關重要的。動畫效果作為提升用戶體驗的關鍵元素&#xff0c;能夠為應用增添生動性和交互性。Android Compose 作為現代 Android UI 工具包&#xff0c;為開發者提供…

sql server如何提高索引命中率

#新星杯14天創作挑戰營第9期# 前言 近期發現以前開發的系統運行緩慢&#xff0c;經排查&#xff0c;發現有很大的優化空間。數據庫版本使用的是sql server&#xff0c;主要有以下一些問題點&#xff1a;數據表無索引、一些不規范的寫法&#xff08;例如in、大表關聯&#xff0…

Qt進程間通信:QSharedMemory 使用詳解

1. 什么是 QSharedMemory&#xff1f; QSharedMemory 是 Qt 中用于進程間共享內存的類。它允許多個進程共享一塊內存區域&#xff0c;從而避免數據傳輸時的 IO 操作&#xff0c;提高通信速度。通過共享內存&#xff0c;多個進程可以直接讀寫這塊內存&#xff0c;而無需經過文件…

2024年3月全國計算機等級考試真題(二級C語言)

&#x1f600; 第1題 下列敘述中正確的是 A. 矩陣是非線性結構 B. 數組是長度固定的線性表 C. 對線性表只能作插入與刪除運算 D. 線性表中各元素的數據類型可以不同 題目解析&#xff1a; A. 矩陣是非線性結構 錯誤。矩陣通常是二維數組&#xff0c;屬…

基于Ebay拍賣網站成交價格的影響因素分析

摘要:近些年來網上拍賣的不斷地發展&#xff0c;網上購物慢慢變成了大家普遍接受的購物方式。因此關于網上拍賣的研究日益成為很多人研究的重點。 影響拍賣網站價格的因素很多&#xff0c;但很少有人分得清楚哪些因素才是比較重要的因素&#xff0c;因此對價格因素分析&#x…

Langchain中的表格解析:RAG 和表格的愛恨情仇

實現 RAG(Retrieval-Augmented Generation)是一個挑戰,尤其是在有效解析和理解非結構化文檔中的表格時。這在處理掃描文檔或圖像格式的文檔時尤為困難。這些挑戰至少包括以下三個方面: 1.表格的“叛逆期”:不準確的解析可能會破壞表格結構: 表格在文檔里就像個叛逆的青少…

Solr-搜索引擎-入門到精通

以下是對 Apache Solr 的簡介及其常用語法的快速入門指南&#xff1a; 一、Solr 是什么&#xff1f; ? 核心定位&#xff1a;Apache Solr 是一個基于 Lucene 的高性能、開源的搜索平臺&#xff0c;支持全文檢索、分詞、高亮、聚合統計等功能。 ? 核心功能&#xff1a; ? 全…

原生后臺GPS位置限制,降低功耗

1.后臺 GPS 位置限制的背景 為了控制功耗&#xff0c;Android 平臺對后臺應用獲取位置信息的頻率進行了限制。后臺的定義與后臺執行限制一致&#xff0c;即應用不在前臺運行時被視為后臺應用。 2.更新間隔限制&#xff1a; 后臺應用獲取位置信息的更新間隔不能超過一定閾值。…

Docker 搭建 PlantUML 服務:高效生成 UML 圖的最佳實踐

PlantUML 是一款開源的 UML 圖形生成工具&#xff0c;它支持生成類圖、時序圖、用例圖、活動圖等多種類型的 UML 圖&#xff0c;廣泛應用于軟件設計、文檔編寫以及團隊溝通中。通過 Docker 安裝 PlantUML&#xff0c;開發者可以快速搭建環境&#xff0c;輕松生成 UML 圖&#x…

簡鹿辦公匯總快速打開 Windows 資源管理器的幾種方式

無論你是剛開始使用電腦的新手&#xff0c;還是已經有一定經驗的用戶&#xff0c;了解如何在 Windows 系統中打開資源管理器都是一個非常基本且重要的技能。Windows 資源管理器&#xff08;現在稱為“文件資源管理器”&#xff09;是幫助你瀏覽、查找和管理計算機上所有文件的主…

嵌入式 python 安裝

下載嵌入式Python后解壓 https://www.python.org/ftp/python/3.12.9/python-3.12.9-embed-amd64.zip cd python-3.12.9-embed-amd64 安裝 pip .\python.exe .\get-pip.py 放開限制 嵌入式 Python 為了減少體積&#xff0c;默認會有一些限制。你需要編輯 python312._pth 文…

DeepSeek底層揭秘——GEMM

目錄 1. 什么是 GEMM&#xff1f; (1) 定義 (2) 核心目標 2. 核心功能 3. 對比傳統通用矩陣乘法庫 4. 技術要素 (1) 硬件感知優化 (2) 自動調優 (3) 高效內存管理 (4) 混合精度計算 5. 難點挑戰&#xff08;含解決方案&#xff09; 6. 技術路徑 7. 具體技術實現 8…

DNA-PAINT

參考: 【科研教程】NUPACK網頁版使用教程 https://www.bilibili.com/video/BV1G94y1W7mN/NUPACK新版網頁版教程-模擬部分 https://zhuanlan.zhihu.com/p/678730568NUPACK 4.0 User Guide https://docs.nupack.org/NUPACK網頁版使用指南 https://zhuanlan.zhihu.com/p/55024017…

小程序內表格合并功能實現—行合并

功能介紹&#xff1a;支付寶小程序手寫表格實現行內合并&#xff0c;依據動態數據自動計算每次需求合并的值&#xff0c;本次記錄行內合并&#xff0c;如果列內合并&#xff0c;同理即可實現 前端技術&#xff1a;grid布局 display&#xff1a;grid 先看實現效果: axml&…

計算機視覺cv2入門之角點檢測

角點是指圖像中兩條邊緣線的交點&#xff0c;這些交點通常代表了圖像中的重要特征。在計算機視覺中&#xff0c;角點檢測是一種關鍵的技術&#xff0c;它可以幫助我們從圖像中提取出這些重要的特征點&#xff0c;進而用于圖像匹配、物體識別、圖像拼接等多種應用。 角點檢測示例…