/**
* 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(head == null) return null;
ListNode p = head;
ListNode currentNode = head.next;
ListNode preNode = null;
while(p!=null){
preNode = p;
currentNode = p.next;
while(currentNode!=null){
if(currentNode.val!=p.val){
currentNode = currentNode.next;
preNode = preNode.next;
}else{
preNode.next = currentNode.next;
currentNode = currentNode.next;
}
}
p = p.next;
}
return head;
}
}
注意到是已经拍过序的链表了所有第二种方案更好
/**
* 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(head == null) return null;
ListNode currentNode = head;
while(currentNode != null && currentNode.next!=null){
if(currentNode.val == currentNode.next.val){
currentNode.next = currentNode.next.next;
}else{
currentNode = currentNode.next;
}
}
return head;
}
}
删除重复链表元素
本文提供两种算法,用于从已排序的单链表中删除所有重复的元素,确保每个元素只出现一次。第一种方法使用两个指针进行复杂操作,而第二种方法则更简洁,直接在遇到重复元素时调整next指针。
778

被折叠的 条评论
为什么被折叠?



