单链表练习题
83.删除排序链表中的重复元素
82.删除排序链表中的重复元素 II
21.合并两个有序链表
面试题.分割链表
160.相交链表
83.删除排序链表中的重复元素
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dummyHead = new ListNode(101);
dummyHead.next = head;
ListNode prev = dummyHead;
ListNode cur = prev.next;
while(cur != null) {
if(prev.val != cur.val) {
prev = prev.next;
} else {
prev.next = cur.next;
}
cur = cur.next;
}
return dummyHead.next;
}
}
运行截图:
82.删除排序链表中的重复元素 II
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode dummyHead = new ListNode(101);
dummyHead.next = head;
ListNode prev = dummyHead;
ListNode cur = prev.next;
while(cur != null) {
ListNode next = cur.next;
if(next == null) {
return dummyHead.next;
}
if(cur.val != next.val) {
prev = prev.next;
cur = cur.next;
} else {
while(next != null && cur.val == next.val) {
next = next.next;
}
prev.next = next;
cur = next;
}
}
return dummyHead.next;
}
}
运行截图:
21.合并两个有序链表
class Solution {
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
if(list1 == null) {
return list2;
}
if(list2 == null) {
return list1;
}
ListNode dummyHead = new ListNode(-1);
ListNode last = dummyHead;
while(list1 != null && list2 != null) {
if(list1.val <= list2.val) {
last.next = list1;
last = list1;
list1 = list1.next;
} else {
last.next = list2;
last = list2;
list2 = list2.next;
}
}
if(list1 == null) {
last.next = list2;
}
if(list2 == null) {
last.next = list1;
}
return dummyHead.next;
}
}
运行截图:
面试题.分割链表
class Solution {
public ListNode partition(ListNode head, int x) {
ListNode smallHead = new ListNode(-1);
ListNode bigHead = new ListNode(-1);
ListNode smallTail = smallHead;
ListNode bigTail = bigHead;
while(head != null) {
if(head.val < x) {
smallTail.next = head;
smallTail = head;
} else {
bigTail.next = head;
bigTail = head;
}
head = head.next;
}
bigTail.next = null;
smallTail.next = bigHead.next;
return smallHead.next;
}
}
运行截图:
160.相交链表
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
ListNode pA = headA,pB = headB;
while(pA != pB) {
pA = pA == null ? headB : pA.next;
pB = pB == null ? headA : pB.next;
}
return pA;
}
}
运行截图: