[LC]83题 Remove Duplicates from Sorted List(删除排序链表中的重复元素)(链表)

时间:2019-09-29
本文章向大家介绍[LC]83题 Remove Duplicates from Sorted List(删除排序链表中的重复元素)(链表),主要包括[LC]83题 Remove Duplicates from Sorted List(删除排序链表中的重复元素)(链表)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

①英文题目

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

Example 1:

Input: 1->1->2
Output: 1->2

Example 2:

Input: 1->1->2->3->3
Output: 1->2->3

②中文题目

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2
示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

③思路

   很简单,这次我是1次写,就通过了。

   因为这个题是,删除重复的元素,让它只出现1次,不像剑指offer里那个变态删除题要求把重复的全删了,1个不留,所以这个题简单。

   直接遍历,将当前结点的元素curr.val与下一个结点的元素curr.next.val比较,

④代码

 1 class Solution {
 2     public ListNode deleteDuplicates(ListNode head) {
 3         if(head==null||head.next==null)
 4             return head;
 5         ListNode curr=head;
 6         while(curr.next!=null){    //因为我保证了.next不为空,那么低8行我调用.next.next就不会越界。
 7             if(curr.val==curr.next.val)
 8                 curr.next=curr.next.next;
 9             else
10                 curr=curr.next;
11         }
12         return head;
13     }
14 }

⑤提交结果

执行结果:
通过
执行用时 :1 ms, 在所有 Java 提交中击败了99.86%的用户
内存消耗 :36.6 MB, 在所有 Java 提交中击败了62.77%的用户

⑥学到的知识 

1、第3、4行这种逻辑或的写法,是专用写法,我见过的所有“保证链表不为空,或者保证链表不止有1个元素”的写法里,最简洁的了。学习一下,以后每次遇到,都这样写。
2、因为我第6行保证了.next不为空,那么低8行我调用.next.next就不会越界。

原文地址:https://www.cnblogs.com/zf007/p/11607296.html