LeetCode 鍊錶

2021-10-04 22:24:29 字數 3180 閱讀 4235

目錄

一、反轉鍊錶 型別

二、雙指標型別

三、鍊錶合併型別

四、鍊錶排序

206. 反轉鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return pre;

}};//遞迴實現

class solution

};

92. 反轉鍊錶 ii

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

auto cur = p;

listnode *pre = nullptr;

while(cnt--)

prem ->next = pre;

p->next = cur;

return fake->next;

}};

24. 兩兩交換鍊錶中的節點

class solution 

}return head->next;

}};//遞迴實現

class solution

};

25. k 個一組翻轉鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if(cur)

return pre;

}else return head;

}};/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

if(n == 0)

pre->next = p1;

pre = l;

}l = inside;

}return res->next;

}};

160. 相交鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return pa;

}};

141. 環形鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return true;

}};

142. 環形鍊錶 ii

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

fast = head;

while(slow!=fast)

return fast;

}};

21. 合併兩個有序鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

else

}cur->next = l1? l1:l2;

return head->next;

}};

23. 合併k個排序鍊錶

struct cmp

};class solution ;

priority_queue,decltype(cmp)> pq(cmp);

for(int i = 0;inext = tmp;

cur = tmp;

if(tmp->next)pq.push(tmp->next);

} return head;

} };

147. 對鍊錶進行插入排序

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return dummy->next;

}};

148. 排序鍊錶

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

void quick_sort(listnode* head,listnode* tail)

p2 = p2->next;

} swap(head,p1);

quick_sort(head,p1);

quick_sort(p1->next,tail);

} listnode* sortlist(listnode* head)

};/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

pre->next = nullptr;

auto l1 = sortlist(head);

auto l2 = sortlist(slow);

return merge(l1,l2);

}listnode* merge(listnode* l1,listnode* l2)

else

}};

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2 輸出 false 示例 2 輸入 1 2 2 1 輸出 true 高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?head null 空鍊錶,回文,返回true head.next null 只有乙個節點的列表,回文,返回tru...

leetcode 鍊錶 回文鍊錶

請判斷乙個鍊錶是否為回文鍊錶。示例 1 輸入 1 2輸出 false示例 2 輸入 1 2 2 1輸出 true高階 你能否用 o n 時間複雜度和 o 1 空間複雜度解決此題?思路 利用快慢指標找到中間節點,當快指標走到末尾時,慢指標指向中間節點 交中間節點之後的節點進行鍊錶反轉 設定指標p1從h...

分隔鍊錶(鍊錶 LeetCode)

題目鏈結 給你乙個鍊錶和乙個特定值 x 請你對鍊錶進行分隔,使得所有小於 x 的節點都出現在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5維護兩個鍊錶,乙個鍊錶儲存比x小的結點,另乙個鍊錶儲...