题解 | 删除有序链表中重复的元素-II

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param head ListNode类
     * @return ListNode类
     */
    public ListNode deleteDuplicates (ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        //  申明一个空节点
        ListNode result = new ListNode(Integer.MIN_VALUE);
        ListNode temp = result;
        ListNode slow = head;
        ListNode fast = slow.next;
        boolean hasSame = false;
        while (fast != null) {
            // 当快指针和慢指针的数据相等时候,快指针指向下一个元素
            if(slow.val == fast.val) {
                fast = fast.next;
                hasSame = true;
            } else {
                // 快慢指针数据不一样时候,判断上两个元素是否相同
                // 如果相等只需要把慢指针指向快指针,快指针指向下一个元素
                // 如果不相等,把temp的下一个元素指向慢指针
                if(!hasSame) {
                    temp.next = slow;
                    temp = temp.next;
                }
                slow = fast;
                fast = slow.next;

                hasSame = false;
            }
        }

        // 判断最后一个元素是否是重复的元素,如果不是重复的元素,把最后一个元素追加到结果中
        if (!hasSame) {
            temp.next = slow;
        } else {
            temp.next = null;
        }
        return result.next;
    }
}

全部评论

相关推荐

2024-11-11 15:12
南昌大学 材料工程师
一个菜鸡罢了:哥们,感觉你的简历还是有点问题的,我提几点建议,看看能不能提供一点帮助 1. ”新余学院“别加粗,课程不清楚是否有必要写,感觉版面不如拿来写一下做过的事情,教育经历是你的弱势就尽量少写 2. “干部及社团经历”和“自我评价”删掉 3. 论文后面的“录用”和“小修”啥的都删掉,默认全录用,问了再说,反正小修毕业前肯定能发出来 4. 工作经验和研究成果没有体现你的个人贡献,着重包装一下个人贡献
点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务