移除鏈表元素數據結構oj題(力扣題206)

目錄

題目描述:

題目解讀(分析)

解決代碼


題目描述:

給你一個鏈表的頭節點?head?和一個整數?val?,請你刪除鏈表中所有滿足?Node.val == val?的節點,并返回?新的頭節點?。

題目解讀(分析):

對于需要刪除鏈表中val的值,我們立馬可以想到一種方法一就是遍歷循環尋找val這個值,進行刪除該節點,這中方法是最容易想出來的,可是時間復雜度是為O(n_{}^{2})。

而這里我們還有一種方法二就是用類似空間換時間的方法(這里沒有向內存申請空間,也同樣將時間復雜度降為O(n))。這里我們著重講解這個方法,這個方法就是直接創建一個新的鏈表來收集刪除所有刪除val值的節點,并進行連接。如圖展示:

寫代碼過程中我們需要使用ptail來遍歷新鏈表plist來存儲新鏈表的頭節點,而pcur是用來遍歷原鏈表和val進行比較,然后得到符合題意的節點移動到ptail中。在最后時如果ptail不為空,那就必須將ptail->next置空,可以將這個作為結束節點,避免返回不符合題意值。

解決代碼:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/typedef struct ListNode ListNode;
ListNode* removeElements(ListNode* head, int val) {//  assert(head);ListNode* plist = NULL;//存儲ListNode* ptail = NULL;//篩選ListNode* pcur = head;//遍歷while (pcur){if(pcur->val != val){if(ptail == NULL){ptail = plist = pcur;}else{ptail->next = pcur;ptail = ptail->next;}}pcur=pcur->next;}//考慮為空if(plist != NULL){ptail->next = NULL;}return plist;
}

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

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

相關文章

GLPK(GNU線性規劃工具包)中建模語言MathProg的使用

GNU MathProg是一種用于描述線性數學規劃模型的建模語言。用GNU MathProg語言編寫的模型描述由一組語句和數據塊組成。 在MathProg中,模型以集合、參數、變量、約束和目標(sets, parameters, variables, constraints, objectives稱為模型對象)的形式進行描述。 在Ma…

《Python星球日記》 第77天:模型部署與總結

名人說:路漫漫其修遠兮,吾將上下而求索。—— 屈原《離騷》 創作者:Code_流蘇(CSDN)(一個喜歡古詩詞和編程的Coder??) 目錄 一、模型部署技術1. 模型文件導出不同模型格式對比2. 使用Flask構建RESTful API3. 使用FastAPI構建高性能API4. 部署優化與最佳實踐二、部署架構…

【JavaWeb】MySQL(準備篇)

1 MySQL安裝 1.1 解壓 下載完成后我們得到的是一個壓縮包(所有文件均在文末安裝包中),將其解壓,我們就可以得到MySQL 8.0.34 的軟件本體了(就是一個文件夾),我們可以把它放在你想安裝的位置 。 1.2 配置 1.2.1 配置…

國產數據庫工具突圍:SQLynx如何解決Navicat的三大痛點?深度體驗報告

引言:Navicat的"中國困境" 當開發者面對達夢數據庫的存儲過程調試,或是在人大金倉中處理復雜查詢時,Navicat突然變得力不從心——這不是個例。 真實痛點:某政務系統遷移至OceanBase后,開發團隊發現Navicat無…

ETL數據集成產品選型需要關注哪些方面?

ETL(Extract,Transform,Load)工具作為數據倉庫和數據分析流程中的關鍵環節,其選型對于企業的數據戰略實施有著深遠的影響。谷云科技在 ETL 領域耕耘多年,通過自身產品的實踐應用,對 ETL 產品選型…

數據結構實驗10.1:內部排序的基本運算

文章目錄 一,實驗目的二,實驗內容1. 數據生成與初始化2. 排序算法實現(1)直接插入排序(2)二分插入排序(3)希爾排序(4)冒泡排序(5)快速…

從秒開到絲滑體驗!WebAssembly助力ZKmall商城重構 B2B2C 商城性能基線

在 B2B2C 電商領域,用戶對頁面加載速度與交互流暢度的要求日益嚴苛。傳統 Web 技術在處理復雜業務邏輯、海量數據渲染時,常出現卡頓、延遲等問題,導致用戶流失。ZKmall 商城創新性地引入 WebAssembly(簡稱 Wasm)技術&a…

FD+Mysql的Insert時的字段賦值亂碼問題

方法一 FDQuery4.SQL.Text : INSERT INTO 信息表 (中心, 分組) values(:中心,:分組); FDQuery4.Params[0].DataType : ftWideString; //必須加這個數據類型的定義,否則會有亂碼 FDQuery4.Params[1].DataType : ftWideString; //ftstring就不行,必須是…

vue2.0 組件生命周期

個人簡介 👨?💻?個人主頁: 魔術師 📖學習方向: 主攻前端方向,正逐漸往全棧發展 🚴個人狀態: 研發工程師,現效力于政務服務網事業 🇨🇳人生格言&…

使用GmSSL v3.1.1實現SM2證書認證

1、首先使用gmssl命令生成根證書、客戶端公私鑰,然后使用根證書簽發客戶端證書; 2、然后編寫代碼完成認證功能,使用根證書驗證客戶端證書是否由自己簽發,然后使用客戶端證書驗證客戶端私鑰對隨機數的簽名是否正確。 第一部分生成根…

升級mysql (rpm安裝)

#備份以防萬一 備份配置文件: /etc/my.cnf.d/server.cnf 備份數據: mysqldump -u your_username -p --all-databases > all_databases.sql #停止 systemctl stop mysql #卸載舊版 yum remove mariadb #安裝新版( 通過yum安裝報錯,死活安裝不了,只能rpm安裝) 下載地址…

深入理解pip:Python包管理的核心工具與實戰指南

# 深入理解pip:Python包管理的核心工具與實戰指南 在Python開發中,第三方庫是提升效率的關鍵。而pip作為Python官方的包管理工具,承擔著安裝、卸載、升級和管理庫的重要職責。本文將全面解析pip的核心命令,結合實例演示用法&#…

Linux配置SSH密鑰認證

介紹 配置SS秘鑰認證后,可以通過shell腳本免密刪除文件或執行命令。 # 生成密鑰對(如果還沒有) ssh-keygen -t rsa# 將公鑰復制到服務器 ssh-copy-id "$remote_user$remote_host"

python打卡第30天

知識點回顧: 一,導入官方庫的三種手段。 使用 import 直接導入整個模塊 import module_name 使用 from ... import ... 導入特定功能 from module_name import function_name 使用 as 關鍵字重命名模塊或功能 import module_name as alias # 或 from mod…

Java基礎(網絡編程)

一、概述 目的:網絡通信: 1、設備和設備 2、進程和進程 1)不同設備之間 2)本地設備之間 需要解決的問題: 如何準確地發送到對方的主機 - IP地址 - 唯一的定位網絡中的一臺主機 如何準確的發送到對方主機的進程 -…

第二屆parloo杯的RSA_Quartic_Quandary

(害,還是太菜了,上去秒了一道題之后就動不了了,今晚做個記錄,一點點的往回拾起吧) # from Crypto.Util.number import getPrime, bytes_to_long # import math # # FLAG b************** # # # def gene…

RL?_ Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers

RL?: Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers 在人工智能領域,大語言模型(LLM)的推理能力提升一直是研究熱點。今天要解讀的論文提出了一種全新的強化學習框架RL?,通過融合推理與驗證能力&#xf…

VS中將控制臺項目編程改為WINDOWS桌面程序

有時候因為誤操作,建立了控制臺項目,但是實際上想建立桌面程序。那么應該如何改過來呢? 一共要修改兩個地方,修改步驟如下: 第一處修改地點: 將C/C下面的預處理器選項中,將原本的_CONSOLE修改…

API Gateway REST API 集成 S3 服務自定義 404 頁面

需求分析 使用 API Gateway REST API 可以直接使用 S3 作為后端集成對外提供可以訪問的 API. 而當訪問的 URL 中存在無效的桶, 或者不存在的對象時, API Gateway 默認回向客戶端返回 200 狀態碼. 而實際上這并不是正確的響應, 本文將介紹如何自定義返回 404 錯誤頁面. 基本功…

【達夢數據庫】過程、函數、包頭和包體詳解零基礎

目錄 背景參考鏈接解釋包頭包體 背景 最近遇到關于包頭和包體的問題,學習并記錄 參考鏈接 參考鏈接: oracle的過程、函數、包頭和包體詳解零基礎 解釋 包頭主要用于定義接口,包體主要用以實現包體中聲明的存儲過程、函數等。 包頭 包體