• 【11_83】Remove Duplicates from Sorted List


    这道题本质上不难,难的是细节处理,容易出错。

    第一遍写的代码越改越大,越臃肿,此时,不如推倒重写,果然,第二次一遍过。

    Remove Duplicates from Sorted List

    My Submissions
    Total Accepted: 90731 Total Submissions: 255705 Difficulty: Easy

    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.

    下面是Discuss里面的好代码:只有三行!!!

    Java写法

    1 public ListNode deleteDuplicates(ListNode head) {
    2         if(head == null || head.next == null)return head;
    3         head.next = deleteDuplicates(head.next);
    4         return head.val == head.next.val ? head.next : head;
    5 }
    View Code

    另一个好代码,和我的思想差不多,不过更简洁:

     1 public class Solution {
     2     public ListNode deleteDuplicates(ListNode head) {
     3         if (head == null) return head;
     4 
     5         ListNode cur = head;
     6         while(cur.next != null) {
     7             if (cur.val == cur.next.val) {
     8                 cur.next = cur.next.next;
     9             }
    10             else cur = cur.next;
    11         }
    12         return head;
    13     }
    14 }
    View Code
     然后是我自己写的:
    C语言
     1 /**
     2  * Definition for singly-linked list.
     3  * struct ListNode {
     4  *     int val;
     5  *     struct ListNode *next;
     6  * };
     7  */
     8 struct ListNode* deleteDuplicates(struct ListNode* head) {
     9     if (head == NULL)
    10         return NULL;
    11     if (head->next == NULL)
    12         return head;
    13         
    14     struct ListNode* p = head;
    15     struct ListNode* q = p->next;
    16     while(p->next != NULL)  {
    17         if(p->val == p->next->val)  {
    18             p->next = p->next->next;
    19         }
    20         else if(p->next != NULL)
    21             p = p->next;
    22     }
    23     
    24     return head;
    25 }
  • 相关阅读:
    How To Move a MySQL Data Directory to a New Location on Ubuntu 16.04
    Mysql Docker Container Command
    svg_png
    png格式图片转为svg格式图片
    Ubuntu Server如何配置SFTP(建立用户监狱)
    ubuntu用户添加adduser, useradd并给予sudo权限
    Setup FTP server on Ubuntu 14.04
    Ubuntu Server 16.04.1系统安装
    1.Linux下生成密钥
    Linux查看设备命令
  • 原文地址:https://www.cnblogs.com/QingHuan/p/5051388.html
Copyright © 2020-2023  润新知