leetcode笔记 203移除链表元素 python Java
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
输入:head = [], val = 1 输出:[]
输入:head = [7,7,7,7], val = 7 输出:[]
python解法一:
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: #删除头节点 while head is not None and head.val == val : head = head.next #删除中间节点 current = head while current is not None and current.next is not None: if current.next.val == val: current.next = current.next.next else : current = current.next return head
Java解法一:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { //删除头节点 while(head != null && head.val == val){ head = head.next; } //删除中间节点 ListNode current; current = head; while(current != null && current.next != null){ if (current.next.val == val){ current.next = current.next.next; } else{ current = current.next; } } return head; } }
python解法二:
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeElements(self, head: ListNode, val: int) -> ListNode: virtual = ListNode(next = head) current = virtual while current.next != None: if current.next.val == val: current.next = current.next.next else: current = current.next return virtual.next
Java解法二:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */ class Solution { public ListNode removeElements(ListNode head, int val) { ListNode virtual = new ListNode(0, head); ListNode current; current = virtual; while(current.next != null ){ if(current.next.val == val){ current.next = current.next.next; } else{ current = current.next; } } return virtual.next; } }
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
自定义线程池如何捕获线程异常