Q:删除给定链表中的重复元素(链表从小到大有序排列)。使链表中的节点都只出现一次
A:
1.判断特殊情况。当链表为空或者链表只有一个节点时,直接返回head
2.定义一个临时节点temp=head,用于遍历链表
3.当temp不为空并且temp.next不为空时(因为下面要比较temp和temp.next是否相等,所以一定要确保这两个节点都不能为空)
3.1 如果temp与temp.next值相等,则让temp指向temp.next.next(删除temp.next节点)
3.2 如果不等,直接右移temp
4.返回head
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
if(head==null || head.next == null) {
return head;
}
ListNode temp = head;
while(temp!=null && temp.next!=null) {
if(temp.val == temp.next.val) {
temp.next = temp.next.next;
} else {
temp = temp.next;
}
}
return head;
}
}