每日一題---OJ題:分隔鏈表

片頭

嗨!小伙伴們,大家好!今天我們一起來看看這道題----分隔鏈表

emmmm,這道題,看描述應該不算太難,我們一起來畫一畫圖唄!

題目讀懂了,那么如何破解這道題呢?

思路:定義2個鏈表,大鏈表和小鏈表,遍歷原鏈表的節點將其放到對應的新鏈表中,最后將大鏈表和小鏈表首尾相連。

第一次:

第二次:

第三次:

第四次:

第五次:

?第六次:

OK,現在pcur在原鏈表中,已經走到NULL的位置,循環結束,部分代碼如下:

         typedef struct ListNode ListNode;//如果鏈表為空,返回空if(head == NULL){return head;}//pcur遍歷原鏈表ListNode* pcur = head;//創建小鏈表,創建小鏈表的哨兵節點ListNode* lessHead = NULL;ListNode* lessTail = NULL;lessHead = lessTail =(ListNode*) malloc(sizeof(ListNode));//創建大鏈表,創建大鏈表的哨兵節點ListNode* greateHead = NULL;ListNode* greateTail = NULL;greateHead = greateTail =(ListNode*) malloc(sizeof(ListNode));//當pcur遍歷到空時,退出循環while(pcur!=NULL){if(pcur->val < x){//尾插到小鏈表中lessTail->next = pcur;lessTail = pcur;}else{//尾插到大鏈表中greateTail->next = pcur;greateTail = pcur;}//pcur指向下一個節點pcur = pcur->next;}

?接下來,我們需要讓greateTail的next指針指向NULL,如果不置為NULL的話,就會形成一個環,

下一步,怎么讓小鏈表和大鏈表連接起來呢?很簡單,讓 lessTail->next = greateHead->next 就可以啦!

最后一步,就是用一個節點來保存第一個節點,把2個哨兵節點釋放,返回第一個有效節點就可以啦!

ListNode* ret = lessHead->next;
free(lessHead);
free(greateHead);
return ret;

OK,這道題被我們解決了,完整代碼如下:

 typedef struct ListNode ListNode;
struct ListNode* partition(struct ListNode* head, int x) {//如果鏈表為空,返回空if(head == NULL){return head;}//pcur遍歷原鏈表ListNode* pcur = head;//創建小鏈表,創建小鏈表的哨兵節點ListNode* lessHead = NULL;ListNode* lessTail = NULL;lessHead = lessTail =(ListNode*) malloc(sizeof(ListNode));//創建大鏈表,創建大鏈表的哨兵節點ListNode* greateHead = NULL;ListNode* greateTail = NULL;greateHead = greateTail =(ListNode*) malloc(sizeof(ListNode));//當pcur遍歷到空時,退出循環while(pcur!=NULL){if(pcur->val < x){//尾插到小鏈表中lessTail->next = pcur;lessTail = pcur;}else{//尾插到大鏈表中greateTail->next = pcur;greateTail = pcur;}//pcur指向下一個節點pcur = pcur->next;}//大鏈表最后一個結點的next指針指向NULLgreateTail->next = NULL;//小鏈表最后一個節點指向大鏈表的第一個有效節點lessTail->next = greateHead->next;//用ret來保存小鏈表的第一個有效節點ListNode* ret = lessHead->next;//將哨兵節點釋放free(lessHead);free(greateHead);//將ret返回return ret;
}

片尾

今天我們學習了一道OJ題---分隔鏈表,希望看完這篇文章能對友友們有所幫助!!!

?求點贊收藏和關注!!!

謝謝大家!!!

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

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

相關文章

microApp vue3+vite+ts 子應用接入改造

公司做了一個平臺,使用的是microApp,需要把現有的一些系統作為子系統改造一下接入這個平臺,所以下面我說的都是子應用的改造,vue2的改造比較簡單,主要的vue3+vite+ts的改造。 參考官網 1、設置跨應用支持 vite默認開啟跨域支持,不需要額外配置。 2、注冊卸載函數 // …

nand flash spec

nand flash簡介 nand flash是一種非易失性存儲器。它具有高存儲密度、低成本和高耐用性的特點。 nand flash的特性是非易失性&#xff0c;即在電源關閉的情況下&#xff0c;數據仍然保留。 nand flash的存儲單元由浮動柵極晶體管組成&#xff0c;每個存儲單元可以存儲一位或多…

短視頻世界對我溫柔以待:成都柏煜文化傳媒有限公司

短視頻世界對我溫柔以待 在繁忙的都市生活中&#xff0c;每個人都在為生活奔波&#xff0c;為夢想努力。而在這個快節奏的時代里&#xff0c;短視頻如同一股清流&#xff0c;以其獨特的魅力&#xff0c;為我帶來了片刻的寧靜與溫柔。它像是一個無聲的朋友&#xff0c;在我疲憊…

(必看圖文)Hadoop集群安裝及MapReduce應用(手把手詳解版)

前言 隨著大數據時代的到來&#xff0c;處理和分析海量數據已成為企業和科研機構不可或缺的能力。Hadoop&#xff0c;作為開源的分布式計算平臺&#xff0c;因其強大的數據處理能力和良好的可擴展性&#xff0c;成為大數據處理領域的佼佼者。本圖文教程旨在幫助讀者理解Hadoop集…

Mysql面試合集

概念 是一個開源的關系型數據庫。 數據庫事務及其特性 事務&#xff1a;是一系列的數據庫操作&#xff0c;是數據庫應用的基本邏輯單位。 事務特性&#xff1a; &#xff08;1&#xff09;原子性&#xff1a;即不可分割性&#xff0c;事務要么全部被執行&#xff0c;要么就…

代碼隨想錄1數組

1 二分查找 Leetcode704 1 [l,r]區間 l 0, r nums.length-1; while(l<r) 因為lr有意義 2 [l,r)區間 l 0, r nums.length; while(l<r) Leetcode35 class Solution {public int searchInsert(int[] nums, int target) {int l0,rnums.length;while(l<r){int m l(…

使用設計模式來增強你的 SpringBoot 開發

SpringBoot 是一個出色的框架&#xff0c;可以快速構建強大而高效的應用程序。但你是否知道設計模式可以將 SpringBoot 開發提升到一個新的水平&#xff1f; ? 設計模式的重要性&#xff1a;了解設計模式如何促進代碼的可重用性、可維護性和整體應用程序健康。 ? SpringBoot…

在Spring Data JPA中使用@Query注解

目錄 前言示例簡單示例只查詢部分字段&#xff0c;映射到一個實體類中只查詢部分字段時&#xff0c;也可以使用List<Object[]>接收返回值再復雜一些 前言 在以往寫過幾篇spring data jpa相關的文章&#xff0c;分別是 Spring Data JPA 使用JpaSpecificationExecutor實現…

python 筆試面試八股(自用版~)

1 解釋型和編譯型語言的區別 解釋是翻譯一句執行一句&#xff0c;更靈活&#xff0c;eg&#xff1a;python; 解釋成機器能理解的指令&#xff0c;而不是二進制碼 編譯是整個源程序編譯成機器可以直接執行的二進制可運行的程序&#xff0c;再運行這個程序 比如c 2 簡述下 Pyth…

運維鍋總詳解RocketMQ

本文嘗試從Apache RocketMQ的簡介、主要組件及其作用、3種部署模式、Controller集群模式工作流程、最佳實踐等方面對其進行詳細分析。希望對您有所幫助&#xff01; 一、Apache RocketMQ 簡介 Apache RocketMQ 是一個開源的分布式消息中間件&#xff0c;由阿里巴巴集團開發并…

祝賀《華為戰略管理法:DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一(宏觀戰略類書籍)

祝賀《華為戰略管理法&#xff1a;DSTE實戰體系》被《中國企業家》雜志評為企業家枕邊書50本之一 2024年4月23日&#xff08;周二&#xff09;下午13:00&#xff0c;《中國企業家》雜志如期舉辦“每天都是讀書日”線下活動。 《中國企業家》雜志攜手商界大咖共同推選50本枕邊書…

Vue.js中的計算屬性

Vue.js中的計算屬性&#xff08;computed properties&#xff09;是用于聲明響應式依賴的屬性。它們會根據它們的依賴進行緩存&#xff0c;并且只有在相關依賴發生改變時才會重新求值。這使得它們非常適合用來處理復雜邏輯和數據處理。 基本用法 在Vue實例中&#xff0c;可以…

鐳速實現AD域集成助力企業文件安全傳輸管控

在當今這個信息量爆炸擴張的年代&#xff0c;企業數據宛如一座蘊藏無限價值的寶庫&#xff0c;它不僅是企業核心競爭力的載體&#xff0c;也成為了各種潛在風險的聚焦點。隨著數字化轉型步伐的加快&#xff0c;安全文件傳輸的管理控制顯得尤為重要&#xff0c;它構成了保護企業…

各類排序方法 歸并排序 擴展練習 逆序對數量

七月挑戰一個月重刷完Y總算法基礎題&#xff0c;并且每道題寫詳細題解 進度:(3/106) 歸并排序的思想也是分而治之 歸并優點&#xff1a;速度穩定,排序也穩定 排序也穩定&#xff08;數組中有兩個一樣的值&#xff0c;排序之后他們的前后順序不發生變化&#xff0c;我們就說…

Leetcode 2065. 最大化一張圖中的路徑價值(DFS / 最短路)

Leetcode 2065. 最大化一張圖中的路徑價值 暴力DFS 容易想到&#xff0c;從0點出發DFS&#xff0c;期間維護已經走過的距離&#xff08;時間&#xff09;和途徑點的權值之和&#xff0c;若訪問到0點則更新答案&#xff0c;若下一步的距離與已走過的距離和超出了maxTime&#…

oracle sql語句 排序 fjd = ‘0101‘ 排在 fjd = ‘0103‘ 的前面

要實現這個排序需求&#xff0c;你可以使用 CASE 表達式來自定義排序邏輯。假設你有一個表格名為 your_table&#xff0c;并且有一個字段 fjd 存儲類似 ‘0101’, ‘0103’ 這樣的值&#xff0c;你可以這樣編寫 SQL 查詢&#xff1a; SELECT * FROM your_table ORDER BY CASE …

專題六:Spring源碼之初始化容器BeanFactory

上一篇咱們通過一個例子介紹初始化容器上下文相關內容&#xff0c;并通過兩個示例代碼看到了Spring在設計階段為我預留的擴展點&#xff0c;和我們應該如何利用這兩個擴展點在Spring初始化容器上下文階段為我們提供服務。這一篇咱們接著往下看。 老這樣子下回到refresh方法上來…

第55期:MySQL 頻繁 Crash 怎么辦?

社區王牌專欄《一問一實驗&#xff1a;AI 版》全新改版歸來&#xff0c;得到了新老讀者們的關注。其中不乏對 ChatDBA 感興趣的讀者前來咨詢&#xff0c;表達了想試用體驗 ChatDBA 的意愿&#xff0c;對此我們表示感謝 &#x1f91f;。 目前&#xff0c;ChatDBA 還在最后的準備…

MSVCR120.DLL丟失的多種修復方法,助你快速解決dll問題

在日常生活和工作中&#xff0c;電腦已經成為我們不可或缺的工具。然而&#xff0c;在使用電腦的過程中&#xff0c;我們常常會遇到一些問題&#xff0c;其中之一就是電腦運行軟件時提示找不到msvcr120.dll。如果該文件缺失或損壞&#xff0c;可能會導致依賴它的應用程序無法啟…

高優先線程

你開發的時候有么有遇到過一個問題&#xff1a;服務器的一個服務線程過幾個小時斷連一次&#xff0c;斷連之后會馬上重連這種情況。這是由于CPU負載較高,線程調度時將處理數據的線程掛起了一段時間導致的。 因此&#xff0c;我有考慮到把cpu的核心進行分散開來&#xff0c;就類…