[LeetCode] 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.该链表中头结点就开始存储数字head->val存在;
        2.初始判断if(head==NULL || head->next==NULL),防止出现'[]'或'[1]';
        3.判断过程中使用q->next->val==q->val和释放free临时结点p;
        4.若使用中间变量number=q->val判断时,当else中q指向下一个结点为空时,该句不存在number=q->val会报错RE,如'[1,1]'。故不建议使用临时变量。
总之,一道非常基础的链表题目,不需要过于复杂化代码。

我的代码:

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */
struct ListNode* deleteDuplicates(struct ListNode* head) {
    struct ListNode *p,*q;
    q=head;
    if(head==NULL || head->next==NULL)        //防止[]和[1]
        return head;
    while(q) {
        if( q->next!=NULL && q->next->val==q->val ) {
            //删除操作 最后free
            p=q->next;
            q->next=p->next;
            free(p);
        }
        else {
            q=q->next;
        }
    }
    return head;
}

其他类型链表题目:

(By:Eastmount 2015-9-10 凌晨3点半   http://blog.csdn.net/eastmount/)

时间: 2024-08-26 15:57:22

[LeetCode] Remove Duplicates from Sorted List - 链表问题的相关文章

[LeetCode]82.Remove Duplicates from Sorted List II

[题目] Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. For example, Given 1->2->3->3->4->4->5, return 1->2->5. Given 1->1->1->2->3, return 2-

[LeetCode]80.Remove Duplicates from Sorted Array II

[题目] Remove Duplicates from Sorted Array II  Total Accepted: 4460 Total Submissions: 15040My Submissions Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For example, Given sorted array A = [1,1,1,2,2,3], Your fun

leetcode 26 Remove Duplicates from Sorted Array

Remove Duplicates from Sorted ArrayTotal Accepted: 66627 Total Submissions: 212739 My Submissions                       Given a sorted array, remove the duplicates in place such that each element appear onlyonce and return the new length. Do not allo

Remove Duplicates from Sorted Array

Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory.

Remove Duplicates from Sorted Array II

Follow up for "Remove Duplicates":What if duplicates are allowed at most twice? For example,Given sorted array A = [1,1,1,2,2,3], Your function should return length = 5, and A is now [1,1,2,2,3].   C++代码实现: #include<iostream> using namespa

LeetCode 26 Remove Duplicates from Sorted Array(从已排序数组中移除重复元素)

翻译 给定一个已排序的数组,删除重复的元素,这样每个元素只出现一次,并且返回新的数组长度. 不允许为另一个数组使用额外的空间,你必须就地以常量空间执行这个操作. 例如, 给定输入数组为 [1,1,2] 你的函数应该返回length = 2, 其前两个元素分别是1和2.它不关心你离开后的新长度. 原文 Given a sorted array, remove the duplicates in place such that each element appear only once and re

【LeetCode从零单排】No26.Remove Duplicates from Sorted Array

题目      题目要求:去除sort int数组中的重复项.      Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for another array, you must do this in place with constant memory

leetcode 83 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 1,1,1 1,2,2 /** * Definition for sing

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. 采用头插法实现顺序插入,C++代码如下: #include<iostream> #include<new