删除排序链表中的重复元素
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
思路:只需要对链表进行一次遍历,就可以删除重复元素,我们设first指针指向头节点head,随后开始对链表进行遍历,如果当前first和first.next的对应元素相同,我们就将first.next移除;否则first指向下一个结点继续进行判断
/**
* Definition for singly-linked list.
* public class ListNode {
* ? ? int val;
* ? ? ListNode next;
* ? ? ListNode() {}
* ? ? ListNode(int val) { this.val = val; }
* ? ? ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
? ?public ListNode deleteDuplicates(ListNode head) {
? ? ? ?ListNode first = head;
? ? ? ?if(head==null)
? ? ? {
? ? ? ? ? ?return head;
? ? ? }
? ? ? ?while(first.next!=null)//判断
? ? ? {
? ? ? ? ? ?if(first.val==first.next.val)
? ? ? ? ? {
? ? ? ? ? ? ? ?first.next=first.next.next;
? ? ? ? ? }
? ? ? ? ? ?else
? ? ? ? ? ?first=first.next;
? ? ? }
? ? ? ?return head;
? }
}
每日都有进行一些java的数据结构算法练习!!!!
|