app开发者平台在数字化时代的重要性与发展趋势解析
610
2022-10-22
力扣第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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~