20.删除排序链表中的重复元素

83. 删除排序链表中的重复元素

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

 

示例 1:

输入:head = [1,1,2]
输出:[1,2]

示例 2:

输入:head = [1,1,2,3,3]
输出:[1,2,3]

 

提示:

  • 链表中节点数目在范围 [0, 300]
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序 排列
 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode() {}
 7  *     ListNode(int val) { this.val = val; }
 8  *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 9  * }
10  */
11 class Solution {
12     public ListNode deleteDuplicates(ListNode head) {
13         
14         ListNode cur = head;
15         while(cur != null && cur.next != null){
16             if(cur.val == cur.next.val){                
17                 cur.next = cur.next.next;   
18             }else{ 
19                 cur = cur.next;
20             }    
21         }
22         return head;
23     }
24 }

法二:递归

 1 class Solution {
 2     public ListNode deleteDuplicates(ListNode head) {
 3         if(head == null || head.next == null){
 4             return head;
 5         }
 6         head.next = deleteDuplicates(head.next);
 7         if(head.val == head.next.val) head = head.next;
 8         return head;
 9     }
10 }

递归思路详解:https://lyl0724.github.io/2020/01/25/1/

 

 

posted on 2022-06-19 16:41  HHHuskie  阅读(18)  评论(0编辑  收藏  举报

导航