前言:
当前同学们对“java链表删除”可能比较关注,各位老铁们都需要学习一些“java链表删除”的相关文章。那么小编同时在网络上收集了一些有关“java链表删除””的相关知识,希望姐妹们能喜欢,朋友们快快来学习一下吧!# 题目
存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
来源:力扣(LeetCode)
链接:
eg:
输入:head = [1,2,3,3,4,4,5]
输出:[1,2,5]
# 代码
/** * 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 { /** * 时间复杂度 O(n) * 空间复杂度 O(1) */ public ListNode deleteDuplicates(ListNode head) { if (head == null) { return head; } ListNode dummy = new ListNode(-1); dummy.next = head; ListNode cur = dummy; while (cur.next != null && cur.next.next != null) { if (cur.next.val == cur.next.next.val){ int tempVal = cur.next.val; while (cur.next != null && cur.next.val == tempVal) { cur.next = cur.next.next; } } else { cur = cur.next; } } return dummy.next; }}# 总结
* 这个题目是链表操作的考察题,链表题目一般题意容易理解,考察代码处理细节。
* 在题目处理中,我们使用了 dummy 虚拟节点,可以简化head的处理。常见的 dummy 使用方法如下
ListNode dummy = new ListNode(-1); dummy.next = head; // 逻辑处理 return dummy.next;
* 坚持每日一题,加油!
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #java链表删除