小黑要开心拒绝抑郁,准备去按个摩晚上和黑驴吃火锅啦的leetcode之旅:83. 删除排序链表中的重复元素

发布于:2023-01-01 ⋅ 阅读:(434) ⋅ 点赞:(0)

小黑代码

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:
    def deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
        # 前指针
        head_pre = ListNode(next = head,val='#')
        # 后指针
        head_after = head
        # 后指针不断向后
        while head_after:
            # 后指针不等于前指针的时候,同时向后挪
            # 相等的时候只有后指针向后挪
            if head_after.val != head_pre.val:
                head_pre.next = head_after
                head_pre = head_pre.next
            head_after = head_after.next
        head_pre.next = None
        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 deleteDuplicates(self, head: Optional[ListNode]) -> Optional[ListNode]:
        cur = head
        if not cur:
            return cur
        while cur.next:
            if cur.val == cur.next.val:
                cur.next = cur.next.next
            else:
                cur = cur.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 deleteDuplicates(ListNode head) {
        if(head == null){
            return null;
        }
        ListNode cur = head;
        while(cur.next != null){
            if(cur.val == cur.next.val){
                cur.next = cur.next.next;
            }else{
                cur = cur.next;
            }
        }
        return head;
    }
}

在这里插入图片描述

小黑生活

在这里插入图片描述