成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起學(xué)習(xí)刪除鏈表的節(jié)點(diǎn)

開發(fā) 前端
若 cur 指向某節(jié)點(diǎn),則執(zhí)行 pre.next = cur.next ;若 cur 指向 nullnull ,代表鏈表中不包含值為 val 的節(jié)點(diǎn)。

[[436875]]

本文轉(zhuǎn)載自微信公眾號(hào)「程序員千羽」,作者程序員千羽。轉(zhuǎn)載本文請(qǐng)聯(lián)系J程序員千羽公眾號(hào)。

 Leetcode : https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof

“GitHub : https://gitee.com/nateshao/leetcode/blob/main/algo-notes/src/main/java/com/nateshao/sword_offer/topic_12_hammingWeight/Solution.java

刪除鏈表的節(jié)點(diǎn)

“題目描述: 給定單向鏈表的頭指針和一個(gè)要?jiǎng)h除的節(jié)點(diǎn)的值,定義一個(gè)函數(shù)刪除該節(jié)點(diǎn)。返回刪除后的鏈表的頭節(jié)點(diǎn)。示例 1:

  1. 輸入: head = [4,5,1,9], val = 5 
  2. 輸出: [4,1,9] 
  3. 解釋: 給定你鏈表中值為 5 的第二個(gè)節(jié)點(diǎn),那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?nbsp;4 -> 1 -> 9. 

示例 2:

  1. 輸入: head = [4,5,1,9], val = 1 
  2. 輸出: [4,5,9] 
  3. 解釋: 給定你鏈表中值為 1 的第三個(gè)節(jié)點(diǎn),那么在調(diào)用了你的函數(shù)之后,該鏈表應(yīng)變?yōu)?nbsp;4 -> 5 -> 9. 

解題思路:

本題刪除值為 val 的節(jié)點(diǎn)分需為兩步:定位節(jié)點(diǎn)、修改引用。

  • 定位節(jié)點(diǎn): 遍歷鏈表,直到 head.val == val 時(shí)跳出,即可定位目標(biāo)節(jié)點(diǎn)。
  • 修改引用: 設(shè)節(jié)點(diǎn) cur 的前驅(qū)節(jié)點(diǎn)為 pre ,后繼節(jié)點(diǎn)為 cur.next ;則執(zhí)行 pre.next = cur.next ,即可實(shí)現(xiàn)刪除 cur 節(jié)點(diǎn)。

** 算法流程:**

  • 特例處理: 當(dāng)應(yīng)刪除頭節(jié)點(diǎn) head 時(shí),直接返回 head.next 即可。
  • 初始化: pre = head , cur = head.next 。
  • 定位節(jié)點(diǎn): 當(dāng) cur 為空 或 cur 節(jié)點(diǎn)值等于 val 時(shí)跳出。
    • 保存當(dāng)前節(jié)點(diǎn)索引,即 pre = cur 。
    • 遍歷下一節(jié)點(diǎn),即 cur = cur.next 。
  • 刪除節(jié)點(diǎn): 若 cur 指向某節(jié)點(diǎn),則執(zhí)行 pre.next = cur.next ;若 cur 指向 nullnull ,代表鏈表中不包含值為 val 的節(jié)點(diǎn)。
  • 返回值: 返回鏈表頭部節(jié)點(diǎn) head 即可。

復(fù)雜度分析:

  • 時(shí)間復(fù)雜度 O(N): N為鏈表長(zhǎng)度,刪除操作平均需循環(huán) N/2 次,最差 N 次。
  • 空間復(fù)雜度 O(1) : cur, pre 占用常數(shù)大小額外空間。
  1. package com.nateshao.sword_offer.topic_15_deleteNode; 
  2.  
  3. /** 
  4.  * @date Created by 邵桐杰 on 2021/11/21 16:22 
  5.  * @微信公眾號(hào) 程序員千羽 
  6.  * @個(gè)人網(wǎng)站 www.nateshao.cn 
  7.  * @博客 https://nateshao.gitee.io 
  8.  * @GitHub https://github.com/nateshao 
  9.  * @Gitee https://gitee.com/nateshao 
  10.  * Description: 刪除鏈表的節(jié)點(diǎn) 
  11.  */ 
  12. public class Solution { 
  13.     public static void main(String[] args) { 
  14.         ListNode listNode = new ListNode(3); 
  15.         int val = 3; 
  16.         ListNode node = deleteNode(listNode, val); 
  17.         System.out.println("node = " + node); 
  18.     } 
  19.  // 推薦 
  20.     public static ListNode deleteNode(ListNode head, int val) { 
  21.         if (head.val == val) return head.next
  22.         ListNode pre = head, cur = head.next
  23.         while (cur != null && cur.val != val) { 
  24.             pre = cur; 
  25.             cur = cur.next
  26.         } 
  27.         if (cur != null) pre.next = cur.next
  28.         return head; 
  29.     } 
  30.  
  31.     public void deleteNode(ListNode head, ListNode deListNode) { 
  32.         if (deListNode == null || head == null
  33.             return
  34.         if (head == deListNode) { 
  35.             head = null
  36.         } else { 
  37.             // 若刪除節(jié)點(diǎn)是末尾節(jié)點(diǎn),往后移一個(gè) 
  38.             if (deListNode.next == null) { 
  39.                 ListNode pointListNode = head; 
  40.                 while (pointListNode.next.next != null) { 
  41.                     pointListNode = pointListNode.next
  42.                 } 
  43.                 pointListNode.next = null
  44.             } else { 
  45.                 deListNode.val = deListNode.next.val; 
  46.                 deListNode.next = deListNode.next.next
  47.             } 
  48.         } 
  49.     } 
  50.  
  51.     /** 
  52.      * 單指針實(shí)現(xiàn) 
  53.      * 
  54.      * @param head 
  55.      * @param val 
  56.      * @return 
  57.      */ 
  58.     public ListNode deleteNode2(ListNode head, int val) { 
  59.         if (head == nullreturn null
  60.         if (head.val == val) return head.next
  61.         ListNode cur = head; 
  62.         while (cur.next != null && cur.next.val != val) { 
  63.             cur = cur.next
  64.         } 
  65.         if (cur.next != null) { 
  66.             cur.next = cur.next.next
  67.         } 
  68.         return head; 
  69.     } 
  70.  
  71.     /** 
  72.      * 遞歸實(shí)現(xiàn) 
  73.      * 
  74.      * @param head 
  75.      * @param val 
  76.      * @return 
  77.      */ 
  78.     public ListNode deleteNode3(ListNode head, int val) { 
  79.         if (head == nullreturn null
  80.         if (head.val == val) return head.next
  81.         else head.next = deleteNode3(head.next, val); 
  82.         return head; 
  83.     } 
  84.  
  85.     public static class ListNode { 
  86.         int val; 
  87.         ListNode next
  88.  
  89.         ListNode(int x) { 
  90.             val = x; 
  91.         } 
  92.     } 

參考鏈接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/solution/mian-shi-ti-18-shan-chu-lian-biao-de-jie-dian-sh-2

 

責(zé)任編輯:武曉燕 來(lái)源: 程序員千羽
相關(guān)推薦

2023-03-28 07:32:37

2021-05-19 10:37:16

WebFlux 前置工具

2022-02-14 10:16:22

Axios接口HTTP

2021-05-20 07:15:34

RSA-PSS算法簽名

2022-12-01 09:59:57

內(nèi)核觀測(cè)性方法

2023-03-26 12:45:52

Linux內(nèi)核頭文件

2022-10-08 00:00:05

SQL機(jī)制結(jié)構(gòu)

2021-03-18 00:04:13

C# 類型數(shù)據(jù)

2021-10-11 10:25:33

排列nums數(shù)組

2017-01-22 15:09:08

架構(gòu)閉環(huán)演進(jìn)

2023-04-26 07:30:00

promptUI非結(jié)構(gòu)化

2022-03-31 18:59:43

數(shù)據(jù)庫(kù)InnoDBMySQL

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信

2021-08-27 07:06:09

DubboDocker技術(shù)

2021-01-12 05:08:49

DHCP協(xié)議模型

2022-10-18 07:33:57

Maven構(gòu)建工具

2023-08-04 08:20:56

DockerfileDocker工具

2023-06-30 08:18:51

敏捷開發(fā)模式

2023-09-10 21:42:31

2022-05-24 08:21:16

數(shù)據(jù)安全API
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国内精品久久久久久影视8 最新黄色在线观看 | 日本不卡高清视频 | 精品永久 | 国产精品2| 成人黄色在线观看 | 久久999 | 中文字幕乱码一区二区三区 | av手机免费在线观看 | 99这里只有精品视频 | 欧美精品在线观看 | 一级毛片视频免费观看 | 天天综合久久 | 在线91| www久久久 | 成人乱人乱一区二区三区软件 | 操久久 | 日韩国产精品一区二区三区 | 日日碰碰 | 日日噜噜噜夜夜爽爽狠狠视频97 | 麻豆精品久久久 | 成人国产一区二区三区精品麻豆 | 一区二区视频在线 | 日本爱爱视频 | 成人网av | 午夜免费观看体验区 | 国产精品爱久久久久久久 | 美女视频一区二区三区 | 日韩无| 在线观看第一页 | 久久99久久99久久 | 国产丝袜一区二区三区免费视频 | 久草网视频 | 美女131mm久久爽爽免费 | com.色.www在线观看 | 午夜无码国产理论在线 | 日韩欧美中文 | 免费性视频| 久久免费国产视频 | 亚洲福利av | 97超在线视频 | 欧美日韩在线一区二区 |