描述:刪除鏈表中等于給定值val的所有節點。
樣例:給出鏈表 1->2->3->3->4->5->3, 和 val = 3, 你需要返回刪除3之后的鏈表:1->2->4->5。
思路:
(1)首先判斷head是否為null,如果是null,則返回null即可。
(2)把頭結點賦給p對象,把head.next賦給q。
(3)當q不為空時進行判斷:如果q.val == val,就把q.next賦給p,next(讓p指向q的下一個節點)。
否則,p.next賦給p,q.next賦給q
(4)最后判斷一下head的值是否為要remove的值
AC代碼:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */public class Solution { /** * @param head a ListNode * @param val an integer * @return a ListNode */ public ListNode removeElements(ListNode head, int val) { if (head == null){ return head; } ListNode p = head; ListNode q = head.next; while (q != null) { //如果值相等 if (q.val == val) { p.next = q.next; q = q.next; } else { p = p.next; q = q.next; } } //最后判斷一下head的值是否為要remove的值 if (head.val == val) { head = head.next; } return head; }}
新聞熱點
疑難解答