题目: 83. 删除排序链表中的重复元素
题目描述:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
解题思路:
- 判断当前节点和下一个节点是否为空
- 空: 直接返回
- 非空: 进行删除操作
- 链表删除只需要 将当前next 指向 下下个节点 即可
源码
java:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head){
// 判断 是否需要后续操作
if(!validLinkList(head)){
return head;
}else {
return delDublicates(head);
}
}
// 验证链表
private boolean validLinkList(ListNode head){
if(head == null || head.next == null){
return false;
}
else{
return true;
}
}
/**
* 删除重复节点
*/
private ListNode delDublicates(ListNode node){
if(node == null || node.next == null) {
return node;
}
ListNode cur = node;
if(node.val == node.next.val){
node.next = node.next.next;
} else {
node = node.next;
}
delDublicates(node);
return cur;
}
}
个人水平有限,如有问题,请各路大神指教,虚心接纳
如果觉得有帮助,请点赞收藏,谢谢