《Cracking the Coding Interview程式設計師面試金典》----連結串列分割
時間限制:3秒 空間限制:32768K 熱度指數:3274
演算法知識視訊講解題目描述
編寫程式碼,以給定值x為基準將連結串列分割成兩部分,所有小於x的結點排在大於或等於x的結點之前
給定一個連結串列的頭指標 ListNode* pHead,請返回重新排列後的連結串列的頭指標。注意:分割以後保持原來的資料順序不變。
思路:題目描述的是要將小於給定x值的節點與大於x值的節點分割成兩部分,而本身連結串列的順序不能夠改變。最後需要返回小於x值的連結串列+大於x值的連結串列的頭節點。
想法很單純,既然要分割連結串列就自然需要定義兩個新的連結串列,第一步遍歷整個給定的連結串列將每個節點的值與給定的x值作對比,當小於x的時候就把新定義的p1連結串列的下一個節點指向此時的temp節點,而當大於x值得時候自然就將此時的temp節點賦給p2的下一個節點。
在過程中需要儲存兩個新定義連結串列的表頭,也就是要判斷一下p1和p2的頭結點以便最後返回頭節點。下面為最終的程式碼示例:
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};*/
class Partition {
public:
ListNode* partition(ListNode* pHead, int x) {
// write code here
ListNode* p1 = NULL;
ListNode* p2 = NULL;
ListNode* temp = NULL;
ListNode* p1Head = NULL;
ListNode* p2Head = NULL;
while (pHead){
temp = pHead->next;
if (pHead->val<x){
if (p1 == NULL){
p1 = pHead;
p1Head = pHead;
}
else{
p1->next = pHead;
p1 = p1->next;
}
}
else{
if (p2 == NULL){
p2 = pHead;
p2Head = pHead;
}
else{
p2->next = pHead;
p2 = p2->next;
}
}
pHead = temp;
}
if (p2)
p2->next = NULL;
if (p1 == NULL)
p1Head = p2Head;
else
p1->next = p2Head;
return p1Head;
}
};
不懂的可以加我的QQ群:261035036(IT程式設計師面試寶典
群) 歡迎你的到來哦,看了博文給點腳印唄,謝謝啦~~
相關文章
- 【程式設計師面試金典】20180801程式設計師面試
- 【程式設計師面試金典】洪水程式設計師面試
- 程式設計師面試金典Chapter1程式設計師面試APT
- 智力題(程式設計師面試經典)程式設計師面試
- [演算法練習及思路-程式設計師面試金典(Java解法)]No77連續數列演算法程式設計師面試Java
- 分割連結串列
- Java初中級程式設計師面試題寶典Java程式設計師面試題
- Leetcode_86_分割連結串列_連結串列LeetCode
- 【JAVA面試資料】程式設計師面試之葵花寶典2Java面試程式設計師
- 【JAVA面試資料】程式設計師面試之葵花寶典1Java面試程式設計師
- 新書出版 |《Oracle程式設計師面試筆試寶典》新書Oracle程式設計師面試筆試
- 2024年程式設計師金九銀十面試寶典(持續更新中................)程式設計師面試
- 【程式碼隨想錄】二、連結串列:2、設計連結串列
- 【LeetCode-連結串列】面試題-反轉連結串列LeetCode面試題
- 【程式設計師面試金典】三個空汽水瓶可以換一瓶汽水。程式設計師面試
- [演算法練習及思路-程式設計師面試金典(Java解法)]No85計算器演算法程式設計師面試Java
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題
- 新書出版 |《資料庫程式設計師面試筆試寶典》新書資料庫程式設計師面試筆試
- 連結串列經典示例
- 連結串列專題——面試中常見的連結串列問題面試
- 好程式設計師:Java程式設計師面試秘籍程式設計師Java面試
- 程式碼隨想錄:設計連結串列
- 2024/12/1 【連結串列】 LeetCode 面試題 02.07. 連結串列相交LeetCode面試題
- 程式設計師程式碼面試指南程式設計師面試
- 演算法面試(一) 連結串列演算法面試
- 程式碼隨想錄第3天 | 連結串列 203.移除連結串列元素,707.設計連結串列,206.反轉連結串列
- 【程式設計師面試寶典】確定兩串亂序同構程式設計師面試
- 好程式設計師Java教程之Java面試寶典Java IO篇程式設計師Java面試
- 好程式設計師Java教程分享經典Java main方法面試題程式設計師JavaAI面試題
- 程式設計師面試經驗程式設計師面試
- Rust 程式設計,用連結串列實現棧Rust程式設計
- 707_設計連結串列
- 35 歲程式設計師面試 21 連掛,慘不忍睹。。。程式設計師面試
- Java乾貨神總結,程式設計師面試技巧Java程式設計師面試
- **203.移除連結串列元素****707.設計連結串列****206.反轉連結串列**
- [演算法練習及思路-程式設計師面試金典(Java解法)]No46.漢諾塔問題演算法程式設計師面試Java
- Java程式設計師面試時應注意的三個經典問題!Java程式設計師面試
- 搞懂單連結串列常見面試題面試題