目录
描述
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1→1→2,返回1→2.
给出的链表为1→1→2→3→3,返回1→2→3.
示例1
输入:{1,1,2}
返回值:{1,2}
思路:
又一道自己做出来了,也比较简单,就是两个指针互相比较,如果相等指向下一个节点,就是遇到连续好几个都相同处理的时候费了很长时间
代码
public ListNode deleteDuplicates(ListNode head) {
// write code here
if (head == null || head.next == null) {
return head;
}
ListNode fast = head.next;
ListNode slow = head;
while (fast != null) {
if (fast.val == slow.val) {
while (fast.next != null) {
if (fast.next.val != slow.val) {
slow.next = fast.next;
break;
}
fast = fast.next;
}
if (fast.next == null) {
slow.next = null;
}
}
fast = fast.next;
slow = slow.next;
}
return head;
}
其他
看完其他题解,感觉自己的好麻烦
代码
import java.util.*;
public class Solution {
public ListNode deleteDuplicates (ListNode head) {
//空链表
if(head == null)
return null;
//遍历指针
ListNode cur = head;
//指针当前和下一位不为空
while(cur != null && cur.next != null){
//如果当前与下一位相等则忽略下一位
if(cur.val == cur.next.val)
cur.next = cur.next.next;
//否则指针正常遍历
else
cur = cur.next;
}
return head;
}
}