力扣第83题.删除链表中的重复元素

网友投稿 562 2022-10-22

力扣第83题.删除链表中的重复元素

力扣第83题.删除链表中的重复元素

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 题目数据保证链表已经按升序 排列

题解一:一次遍历

用while循环来遍历,注意细节就行

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode deleteDuplicates(ListNode head) { if(head ==null){ return head; } ListNode currentNode = head; while(currentNode.next!=null){//这里一定是next非空,才能继续循环,不能是当前节点非空 if(currentNode.val==currentNode.next.val){ currentNode.next=currentNode.next.next; } else{ currentNode=currentNode.next; } } return head; }}

题解二:递归

递归处理,本质上是将链表压栈后倒序处理了

/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = next; } * } */class Solution { public ListNode deleteDuplicates(ListNode head) { if(head ==null || head.next==null){ return head; } head.next=deleteDuplicates(head.next); return head.val==head.next.val ? head.next:head; }}

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:SimpleFramework- 基于业务模型的MVC框架
下一篇:cocos的一个简单的支付框架
相关文章

 发表评论

暂时没有评论,来抢沙发吧~