LeetCode 83 — Remove Duplicates from Sorted List(C++ Java Python)

来源:互联网 发布:centos yum 源更新 编辑:程序博客网 时间:2024/05/19 06:19
题目:http://oj.leetcode.com/problems/remove-duplicates-from-sorted-list/

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

题目翻译:

给定一个有序链表,删除所有重复元素,使得每个元素只出现一次。
例如,
给定1->1->2,返回1->2。
给定1->1->2->3->3,返回1->2->3。

分析:
        每个元素只保留一次,多个重复元素一次删除。
C++实现:
/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode *deleteDuplicates(ListNode *head) {    if(head == NULL || head->next == NULL)    {    return head;    }    ListNode *pre = head;    ListNode *cur = head->next;    while(cur != NULL)    {    if(cur->val != pre->val)    {    pre = cur;    cur = cur->next;    continue;    }    while(cur->next != NULL && cur->next->val == pre->val)    {    cur = cur->next;    }    pre->next = cur->next;    cur = pre->next;    }    return head;    }};
Java实现:
/** * Definition for singly-linked list. * public class ListNode { *     int val; *     ListNode next; *     ListNode(int x) { *         val = x; *         next = null; *     } * } */public class Solution {    public ListNode deleteDuplicates(ListNode head) {        if (head == null || head.next == null) {return head;}ListNode pre = head;ListNode cur = head.next;while (cur != null) {if (cur.val != pre.val) {pre = cur;cur = cur.next;continue;}while (cur.next != null && cur.next.val == pre.val) {cur = cur.next;}pre.next = cur.next;cur = pre.next;}return head;    }}
Python实现:
# Definition for singly-linked list.# class ListNode:#     def __init__(self, x):#         self.val = x#         self.next = Noneclass Solution:    # @param head, a ListNode    # @return a ListNode    def deleteDuplicates(self, head):        if head == None or head.next == None:            return head                pre = head        cur = head.next                while cur != None:            if cur.val != pre.val:                pre = cur                cur = cur.next                continue                        while cur.next != None and cur.next.val == pre.val:                cur = cur.next                        pre.next = cur.next            cur = pre.next                return head
        感谢阅读,欢迎评论!
0 0
原创粉丝点击