LinkedList专题1
生活随笔
收集整理的這篇文章主要介紹了
LinkedList专题1
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
237 Delete Node in a Linked List
思路:單向鏈表,只給定要刪除的節點。怎么刪除這個節點。參考。例如要刪除節點node。一般來說我們需要將node.preNode.next = node.next。但是現在沒有node的上一個節點。代替方案是修改當前節點為node.next節點。
node.val = node.next.val;node.next = node.next.next;206 Reverse Linked List
思路:逆轉LinkedList,也是單向的。每new一個節點,將當前節點設置為頭節點,上一個節點設置為當前節點的next。
public ListNode reverseList(ListNode head) {if(head==null) return null;ListNode node = head;ListNode newNode = new ListNode(node.val);while(node.next!=null){node = node.next;ListNode newHead = new ListNode(node.val);newHead.next = newNode;newNode = newHead;}return newNode;}學習:不創建新的node,修改原節點的next為上一個節點。參考鏈接。
21. Merge Two Sorted Lists
思路:有些題你知道該怎么做,就是不會寫代碼。
代碼
234. Palindrome Linked List
學習:這道題目的思路是比較簡單的。對于單向列表的難點,往往就是就是如何找到一個節點的上一個節點。這個根據不同要求解決方法不同。
本題思路是1 查找到LinkedList的一半;2 把后一部分逆轉;3 比較兩部分是否相同。這里的細節就是注意當list長度為奇數的時候。
1 查找到LinkedList的一半,使用快慢指針;
2 把后一部分逆轉:在前面做過;
3 比較相同,就簡單了。
代碼
總結
以上是生活随笔為你收集整理的LinkedList专题1的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript真的是异步的吗?且看
- 下一篇: How to change max_al