203. 移除链表元素

原题链接:完成情况:解题思路:__203移除链表元素_递归遍历链表__203移除链表元素_迭代

参考代码:__203移除链表元素_递归遍历链表__203移除链表元素_迭代

原题链接:

203. 移除链表元素

https://leetcode.cn/problems/remove-linked-list-elements/description/

完成情况:

解题思路:

__203移除链表元素_递归遍历链表

递归遍历链表,然后从后往前找,判断ListNode是不是需要删除的val 之所以//尾部遍历,是因为如果删除当前的值,那么就又需要当前的前面去连接当前的后面。 而普通链表只能链接后面,不能链接前面。

__203移除链表元素_迭代

针对上面的问题,引入了dummyHead,哨位结点。

参考代码:

__203移除链表元素_递归遍历链表

package 日常Java程序测试.代码随想录.链表;

//class ListNode{

// int val;

// ListNode next;

// ListNode() {}

// ListNode(int val) { this.val = val; }

// ListNode(int val, ListNode next) { this.val = val; this.next = next; }

//}

public class __203移除链表元素_递归遍历链表 {

public ListNode removeElements(ListNode head, int val) {

if (head == null){

return head;

}

head.next = removeElements(head.next,val); //尾部遍历

return head.val == val? head.next :head;

}

}

__203移除链表元素_迭代

package 日常Java程序测试.代码随想录.链表;

class ListNode {

int val;

ListNode next;

ListNode() {}

ListNode(int val) { this.val = val; }

ListNode(int val, ListNode next) { this.val = val; this.next = next; }

}

public class __203移除链表元素_迭代 {

public ListNode removeElements(ListNode head, int val) {

ListNode dummyHead = new ListNode(0); //从头遍历找不到头的替换位置

dummyHead.next = head; //哨位结点

//不另外构造一个temp的话,虽然遍历了一遍链表,但dummyHead就会无法把ListNode串联起来。

ListNode temp = dummyHead;

while (temp.next != null){

if (temp.next.val == val){

temp.next = temp.next.next;

}else {

temp = temp.next;

}

}

return dummyHead.next;

}

// public ListNode removeElements(ListNode head, int val) {

// ListNode dummyHead = new ListNode(0); //从头遍历找不到头的替换位置

// dummyHead.next = head; //哨位结点

// //ListNode temp = dummyHead;

// while (dummyHead.next != null){

// if (dummyHead.next.val == val){

// dummyHead.next = dummyHead.next.next;

// }else {

// dummyHead = dummyHead.next;

// }

// }

// return dummyHead.next;

// }

}

相关文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。