日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析)

發(fā)布時(shí)間:2024/2/28 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

題目


題解

一種怪異的節(jié)點(diǎn)刪除方式

本題的思路很簡單,舉例就能說明具體的做法。

例如,鏈表1->2->3->null,只知道要?jiǎng)h除節(jié)點(diǎn)2,而不知道頭節(jié)點(diǎn)。那么只需把節(jié)點(diǎn)2 的值變成節(jié)點(diǎn)3 的值,然后在鏈表中刪除節(jié)點(diǎn)3 即可。
這道題目出現(xiàn)的次數(shù)很多,這么做看起來非常方便,但 其實(shí)是有很大問題的

存在的問題一

這樣的刪除方式 無法刪除最后一個(gè)節(jié)點(diǎn)。還是以原示例來說明,如果知道要?jiǎng)h除節(jié)點(diǎn)3,而不知道頭節(jié)點(diǎn)。但它是最后的節(jié)點(diǎn),根本沒有下一個(gè)節(jié)點(diǎn)來代替節(jié)點(diǎn)3 被刪除,那么只有讓節(jié)點(diǎn)2 的next 指向null 這一種辦法,而我們又根本找不到節(jié)點(diǎn)2,所以根本沒法正確刪除節(jié)點(diǎn)3。讀者可能會(huì)問,我們能不能把節(jié)點(diǎn)3 在內(nèi)存上的區(qū)域變成null 呢?這樣不就相當(dāng)于讓節(jié)點(diǎn)2 的next 指針指向了null,起到節(jié)點(diǎn)3 被刪除的效果了嗎?不可以。null 在系統(tǒng)中是一個(gè)特定的區(qū)域,如果想讓節(jié)點(diǎn)2 的next 指針指向null,必須找到節(jié)點(diǎn)2。

存在的問題二

這種刪除方式在本質(zhì)上根本就不是刪除了node 節(jié)點(diǎn),而是把node 節(jié)點(diǎn)的值改變,然后刪除node 的下一個(gè)節(jié)點(diǎn),在 實(shí)際的工程中可能會(huì)帶來很大問題

  • 比如,工程上的一個(gè)節(jié)點(diǎn)可能代表很復(fù)雜的結(jié)構(gòu),節(jié)點(diǎn)值的復(fù)制會(huì)相當(dāng)復(fù)雜,或者可能改變節(jié)點(diǎn)值這個(gè)操作都是被禁止的;

  • 再如,工程上的一個(gè)節(jié)點(diǎn)代表提供服務(wù)的一個(gè)服務(wù)器,外界對(duì)每個(gè)節(jié)點(diǎn)都有很多依賴,比如,示例中刪除節(jié)點(diǎn)2 時(shí),其實(shí)影響了節(jié)點(diǎn)3 對(duì)外提供的服務(wù)。

這種刪除方式具體看如下代碼。

class ListNode {int val;ListNode next;ListNode(int x) {val = x;} }public class Solution {public void deleteNode(ListNode node) {node.val = node.next.val;node.next = node.next.next;} }

總結(jié)

以上是生活随笔為你收集整理的leetcode 237. 删除链表中的节点(左神算法:一种怪异的节点删除方式、此方法存在的问题分析)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。