删除排序链表的重复元素(Java实现)
Posted youdiaodaxue16
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了删除排序链表的重复元素(Java实现)相关的知识,希望对你有一定的参考价值。
1.删除排序链表的重复元素I
1.1题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
代码结果:
/** * Definition for singly-linked list. * public class ListNode * int val; * ListNode next; * ListNode(int x) val = x; * */ class Solution public ListNode deleteDuplicates(ListNode head) ListNode p = head; while(p != null) if(p.next != null && p.val == p.next.val) p.next = p.next.next; else p = p.next; return head;
2.删除排序链表的重复元素II
2.1题目:
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
示例 2:
输入: 1->1->1->2->3
输出: 2->3
代码结果:
/** * Definition for singly-linked list. * public class ListNode * int val; * ListNode next; * ListNode(int x) val = x; * */ class Solution public ListNode deleteDuplicates(ListNode head) ListNode dummy = new ListNode(0); dummy.next = head; ListNode p = head; ListNode q = dummy; boolean isDel = false; while(p != null) if(p.next != null && p.val == p.next.val ) isDel = true; p.next = p.next.next; else p = p.next; if(isDel) q.next = p; isDel = false; else q = q.next; return dummy.next;
3.分隔链表:
3.1题目:
给定一个链表和一个特定值 x,对链表进行分隔,使得所有小于 x 的节点都在大于或等于 x 的节点之前。
你应当保留两个分区中每个节点的初始相对位置。
示例:
输入: head = 1->4->3->2->5->2, x = 3
输出: 1->2->2->4->3->5
代码结果:
/** * Definition for singly-linked list. * public class ListNode * int val; * ListNode next; * ListNode(int x) val = x; * */ class Solution public ListNode partition(ListNode head, int x) ListNode dummy1 = new ListNode(-1); ListNode dummy2 = new ListNode(-1); ListNode p1 = dummy1; ListNode p2 = dummy2; while(head != null) if(head.val < x) p1.next = head; p1 = p1.next; else p2.next = head; p2 = p2.next; head = head.next; p2.next = null; p1.next = dummy2.next; //dummy2.next = null; return dummy1.next;
以上是关于删除排序链表的重复元素(Java实现)的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode Java刷题笔记—82. 删除排序链表中的重复元素 II
精选力扣500题 第44题 LeetCode 82. 删除排序链表中的重复元素 IIc++/java详细题解
精选力扣500题 第66题 LeetCode 83. 删除排序链表中的重复元素c++/java详细题解
力扣——链表题 203.移除链表元素83.删除排序链表中重复元素82.删除排序链表中重复元素Ⅱ206.反转链表 876.链表的中间节点