import java.util.*;
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
//特殊值处理,当链表为空或者长度为1时,此时链表没有重复元素
if(head == null || head.next == null){
return head;
}
ListNode flow = head; //创建一个慢指针,指向链表的头节点
ListNode fast = flow; //创建一个块指针,指向链表的第二个节点
while (fast != null){//当快指针不为空时,快慢指针遍历链表,如果快慢指针指向的节点值相等,则应该删除快指针指向的节点
if(fast.val == flow.val){//如果快慢指针指向的节点值相等,删除快指针指向的节点
fast = fast.next;
flow.next = fast;
}else {//如果快慢指针指向的节点值不相等,快慢指针移动
flow = fast;
fast = fast.next;
}
}
return head;
}
}
/*
* public class ListNode {
* int val;
* ListNode next = null;
* }
*/
public class Solution {
/**
*
* @param head ListNode类
* @return ListNode类
*/
public ListNode deleteDuplicates (ListNode head) {
// write code here
//特殊值处理,当链表为空或者长度为1时,此时链表没有重复元素
if(head == null || head.next == null){
return head;
}
ListNode flow = head; //创建一个慢指针,指向链表的头节点
ListNode fast = flow; //创建一个块指针,指向链表的第二个节点
while (fast != null){//当快指针不为空时,快慢指针遍历链表,如果快慢指针指向的节点值相等,则应该删除快指针指向的节点
if(fast.val == flow.val){//如果快慢指针指向的节点值相等,删除快指针指向的节点
fast = fast.next;
flow.next = fast;
}else {//如果快慢指针指向的节点值不相等,快慢指针移动
flow = fast;
fast = fast.next;
}
}
return head;
}
}