每日算法 | 83.删除排序链表中的重复元素
例题:83.删除排序列表中的重复元素
题目描述
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。看这题是不是很像26题和27题的样子,只不过前面是排序数组内删除重复项,这个是删除排序链表中的重复元素。所以同理,按一套方法,也就是双索引去做这题。代码:
/**
 * 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) {
        if (head == null) {
            return null;
        }
        ListNode s = head;    //这两快慢索引原本是整数=0,链表里就是=head
        ListNode f = head;
        while(f != null) {
            if (f.val != s.val) {
                s.next = f;
                s = s.next;
            } 
            f = f.next;
        }
        s.next = null;
        return head;
    }
}依旧是慢索引进行获取不重复元素进行重排(可能还要加上计数),快索引去找元素与慢索引进行对比,所以无论一不一样快索引都要跳到下一个元素,慢索引在这一题则是对比到不同的就让下一个节点等于快索引的值,慢索引再跳到下一个节点去准备与下一个快索引得到的值进行比对,循环往复获得结果。
但注意了,这里要返回已排序的重排链表,比前面难了一点,但想必就一点点改动,难不了多少。
                                				RoLingG | 博客
                			
评论(0)