[鏈表專題]力扣82

1. 力扣82 : 刪除排序鏈表中的重復元素

題 :?

給定一個已排序的鏈表的頭 head , 刪除原始鏈表中所有重復數字的節點,只留下不同的數字 。返回 已排序的鏈表 。示例 1:輸入:head = [1,2,3,3,4,4,5]
輸出:[1,2,5]
示例 2:輸入:head = [1,1,1,2,3]
輸出:[2,3]提示:鏈表中節點數目在范圍 [0, 300] 內
-100 <= Node.val <= 100
題目數據保證鏈表已經按升序 排列

思路1 : 遞歸法

  • 標準開頭,如果head為空鏈表或該鏈表只有一個節點,直接返回.
  • 如果head指向的節點的數據域與其下一個節點的數據域相等,則p記錄head的下下一個節點.p節點仍然有可能與head節點的數據域相等.while循環.如果p的數據域與head的數據域相等,則將head后移一個節點.如果不相等,則跳出循環.因為p之前的節點按照規則都需要刪除.所以需要返回p的節點的遞歸結果.
  • 如果head指向的節點的數據域與下一個節點的數據域不想等,則head連接head的下一個節點的遞歸結果.并返回head.

解1 :?

class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}if (head.val == head.next.val) {ListNode p = head.next.next;while (p != null) {if (p.val == head.val) {p = p.next;} else {break;}}return deleteDuplicates(p);}head.next = deleteDuplicates(head.next);return head;}
}

思路2 : 一次遍歷(官方題解)

  • 頭節點有可能被刪除,所以設置哨兵節點dummy.cur被初始化指向哨兵節點.問題變為判斷cur.next與cur.next.next是否需要刪除.第一次循環時,判斷第一個節點的數據域是否與第二個節點相等,如果相等,p指向第二個節點的next節點.如果p為null,cur.next指向null.如果不相等,判斷p節點的數據域是否與cur.next的數據域相等,如果相等,則指向的該節點也需要刪除,即p=p.next.如果不想等,退出內層循環,cur.next指向p.(如出現1 2 2 2 3這種情況).
  • 當最后一次while循環時,此時cur指向鏈表的倒第三個節點.判斷cur.next的數據域是否與cur.next.next的相等.如果相等,p為null.則cur.next=null.如果不想等,倒第一和二的節點無需刪除.cur=cur.next.while條件不滿足.退出循環.

解2 :?

class Solution {public ListNode deleteDuplicates(ListNode head) {if (head == null || head.next == null) {return head;}ListNode dummy = new ListNode(10086, head);ListNode cur = dummy;while (cur.next != null && cur.next.next != null) {if (cur.next.val == cur.next.next.val) {ListNode p = cur.next.next.next;while (p != null) {if (p.val == cur.next.val) {p = p.next;} else {break;}}cur.next = p;} else {cur = cur.next;}}return dummy.next;}
}

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

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

相關文章

【YOLO改進】換遍MMDET主干網絡之Pyramid Vision Transformer(PVT)(基于MMYOLO)

Pyramid Vision Transformer&#xff08;PVT&#xff09; Pyramid Vision Transformer&#xff08;PVT&#xff09;是一種深度學習模型&#xff0c;它結合了Transformer架構和金字塔結構&#xff0c;旨在將Transformer的強大能力引入計算機視覺任務中&#xff0c;特別是那些需…

如何深入理解業務需求和業務流程?

要深入理解業務需求和業務流程&#xff0c;可以嘗試以下方法&#xff1a; 1. 積極參與需求討論&#xff1a;在相關會議中認真聆聽&#xff0c;提出問題&#xff0c;與業務人員充分交流。 2. 研讀業務文檔&#xff1a;仔細分析業務規劃、產品說明等文檔&#xff0c;梳理出關鍵…

SQL練習題2.1

建表 # 學生表 create table t_student (stu_id varchar(10),stu_name varchar(10),stu_age datetime,stu_sex varchar(10) );# 課程表 create table t_t_course (c_id varchar(10),c_name varchar(10),c_teaid varchar(10) );# 教師表 create table t_t_teacher (tea…

C語言中數組與指針的區別

一. 簡介 本文學習了 C語言中數組與指針的區別。這樣的話&#xff0c;可以在編寫C代碼時規避掉出錯的問題。 二. C語言中數組與指針的區別 1. 數組 定義字符串數組時&#xff0c;必須讓編譯器知道需要多少空間。 一種方法是用足夠空間的數組存儲字符串。例如如下&#xf…

DOM重點核心(注冊事件+DOM事件流)

目錄 1.注冊事件 注冊時間概述 addEventListener() 刪除事件 2.DOM事件流 DOM事件流理論 事件對象 事件對象的常見屬性和方法 e.targe 和 this的區別 阻止默認行為 阻止冒泡 事件委托 禁止右鍵菜單和禁止選中文字 獲得鼠標的坐標&#xff08;可視區、頁面、瀏覽器…

js原生彈框多選框

js原生彈框多選框 代碼如下&#xff1a; <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>JavaS…

golang適配國產數據庫

隨著國產化的推進&#xff0c;越來越多的企業選擇國產數據庫替代mysql或者Oracle。 本篇主要介紹golang如何適配國產數據庫 主流的國產數據庫有達夢&#xff0c;金倉&#xff0c;神通&#xff0c;優炫&#xff0c;南大通用數據庫等 前提環境 unixODBC安裝 yum -y install un…

【深度學習實戰(36)】模型轉換之onnx模型轉地平線J3 二進制bin模型

一、PTQ量化流程 &#xff08;1&#xff09; 核查onnx模型 &#xff08;2&#xff09;準備和生成模型校準數據集 &#xff08;3&#xff09;PTQ量化 &#xff08;4&#xff09;量化模型推理 二、具體流程 &#xff08;1&#xff09;使用01_check_onnx.sh腳本&#xff0c;對o…

Spring6 源碼分析-ioc

&#xff08;1&#xff09;IDEA開發工具&#xff1a;2022.1.2 &#xff08;2&#xff09;JDK&#xff1a;Java17&#xff08;Spring6要求JDK最低版本是Java17&#xff09; &#xff08;3&#xff09;Spring&#xff1a;6.0.2 <dependencies><!--spring context依賴…

【教程】Linux/Jetson 安裝X11VNC同步屏幕內容

轉載請注明出處&#xff1a;小鋒學長生活大爆炸[xfxuezhagn.cn] 如果本文幫助到了你&#xff0c;請不吝給個[點贊、收藏、關注]哦~ 目錄 背景說明 實際效果 安裝步驟 安裝 x11vnc 配置 x11vnc 配置 x11vnc 作為系統服務 使用 VNC 客戶端連接 背景說明 通常vnc-server是單…

分享一個非常好用的安裝包下載網站

當我們需要下載linux下的某些包,以便在自己的環境下進行編譯自己的安裝包的時候,可能需要用到一些各種版本的依賴包,從網上 百度會很麻煩。 這里分享一個很好用的安裝包下載網站,記得點贊收藏 網站: Red Hat Enterprise Linux Repositories - pkgs.org 找到對應系統,然…

深入理解K8S【安全認證機制kubectlconfig】

深入理解K8S【安全認證機制】 1 核心概念 1.1 安全體系 對于大型系統來說&#xff0c;對業務的權限、網絡的安全認證是必不可少的。 對于linux系統來說&#xff0c;用戶和組、文件權限、SELinux、防火墻、pam、sudo等&#xff0c;究其核心的目的都是為了保證系統是安全的。 …

golang 中在for循環體內使用select case <-time.After定時器問題

在go語言的代碼中&#xff0c;我們經常會看到在在for循環體內使用select case <-time.After 的類似語句&#xff0c; 其實這個地方不管你是用 time.After(2 * time.Second) 還是 time.NewTicker(2 * time.Second) 的方式&#xff0c;如果放到for循環體內select case 則這個c…

【element-plus】自動導入 + typescript 提示 + 自定義主題色

1、自動導入 2、引用加載組件類型提示 第一步&#xff1a;安裝自動導入功能所需的插件 npm install -D unplugin-vue-components unplugin-auto-import 第二步&#xff1a; vite版&#xff1a; // vite.config.ts import { defineConfig } from vite import AutoImport fr…

四天學會JS高階(學好vue的關鍵)——作用域解構箭頭函數(理論+實戰)(第一天)

一、作用域 提到作用域&#xff08;作用域又分為局部作用域和全局作用域&#xff09;&#xff0c;就要想到變量。因為作用域規定了變量能夠被訪問的范圍&#xff08;也就是作用域是為變量而服務的&#xff09;&#xff0c;為了避免全局變量污染這一情況&#xff0c;所以需要使…

如何排查域名網站無法訪問了頁面報500錯誤

本周有一個客戶&#xff0c;購買Hostease的虛擬主機&#xff0c;詢問我們的在線客服&#xff0c;域名網站無法訪問了報500錯誤頁面&#xff0c;怎么辦&#xff1f;我們為用戶提供相關教程&#xff0c;用戶很快解決了遇到的問題。在此&#xff0c;我們分享這個操作教程&#xff…

bugfix:遇見“隱形字符”:ⅰ與i的編碼迷局

前言 在軟件開發的世界里&#xff0c;遇到各種奇奇怪怪的bug是在所難免的。今天&#xff0c;我就遭遇了一個看似簡單實則棘手的問題——用戶反饋賬號無法登錄&#xff0c;系統一直提示“賬號不存在”。一番抽絲剝繭后&#xff0c;我發現問題竟然出在一個不起眼的字符上&#x…

Go微服務: Gin框架搭建網關, 接入熔斷器,鏈路追蹤以及服務端接入限流和鏈路追蹤

概述 本文使用最簡單和快速的方式基于Gin框架搭建一個微服務的網關調用微服務的場景網關作為客戶端基于RPC調用某一服務端的服務并接入熔斷和限流以及鏈路追蹤具體場景&#xff1a;通過網關API查詢購物車里的數據在最后&#xff0c;會貼上網關和購物車服務的代碼倉庫 服務端搭…

避雷:搭建AI知識庫注意事項

AI知識庫作為信息存儲和進行智能處理的核心部分&#xff0c;受到越來越多企業的重視。為了更好地發展&#xff0c;企業也紛紛開始搭建AI知識庫。然而&#xff0c;在搭建AI知識庫的過程中&#xff0c;也有很多雷區容易踩到&#xff0c;導致項目延遲、效果不佳甚至失敗。所以&…

《控制系統實驗與綜合設計》計控第三次(含程序和題目)

實驗七 采樣控制系統的分析 一、實驗完成任務 1、熟悉用 LF398 組成的采樣控制系統&#xff1b; 2、通過本實驗理解采樣定理和零階保持器的原理及其實現方法&#xff1b; 3、觀察系統在階躍作用下的穩態誤差。 4.、研究開環增益 K 和采樣周期 T 的變化對系統動態性能的影響…