1. 移除鏈表節點
public class RemoveElements203 {
//定義一個單鏈表
public class ListNode {
int val; //當前節點值
ListNode next; //下一個節點值
//構造方法 初始化當前節點值
ListNode(int x) { val = x; }
}
/**移除鏈表節點
*時間複雜度 O(n)
* @param head
* @param val
* @return
*/
public ListNode removeElements(ListNode head, int val) {
//增加啞元節點 用來定位頭結點
ListNode sentinel = new ListNode(0);
sentinel.next = head;
//創建前節點 和 當前節點
ListNode prev = sentinel, curr = head;
//當前節點不爲空一直循環,直到鏈表結束
while (curr != null) {
//當前節點值等於給定值 當前節點的前節點next指向當前節點的下一個節點
if (curr.val == val){
prev.next = curr.next;
//當前節點值不等於給定值 讓前指針向前移動一位 前節點等於當前節點
} else{
prev = curr;
}
//讓指針向後移動一位 判斷下一個節點是否爲空
curr = curr.next;
}
return sentinel.next;
}
}