题意:
删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次
例如:
给出的链表为1\to1\to21→1→2,返回1 \to 21→2.
给出的链表为1\to1\to 2 \to 3 \to 31→1→2→3→3,返回1\to 2 \to 31→2→3.数据范围:链表长度满足 0 \le n \le 1000≤n≤100,链表中任意节点的值满足 |val| \le 100∣val∣≤100
进阶:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)
示例:
输入:
{1,1,2}返回值:
{1,2}
题解:
对于每个链表元素i,向后遍历直到找到值不相等的节点j,直接让i节点指向j,则中间重复元素直接忽略掉。
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
ListNode hh=head, h=null;
while(head!=null)
{
h =head.next;
while(h!=null&&head.val==h.val)
{
h=h.next;
}
head.next=h;
head=head.next;
}
return hh;
}
}