关于我的 Leetcode 题目解答,代码前往 Github:https://github.com/chenxiangcyr/leetcode-answers
LeetCode题目:26. Remove Duplicates from Sorted Array
Given a sorted array nums, remove the duplicates in-place such that each element appear only once and return the new length.
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0;
for(int n : nums) {
if(i < 1 || n > nums[i - 1]) {
nums[i] = n;
i++;
}
}
return i;
}
}
LeetCode题目:80. Remove Duplicates from Sorted Array II
Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3]
,
Your function should return length = 5
, with the first five elements of nums being 1, 1, 2, 2
and 3
. It doesn't matter what you leave beyond the new length.
class Solution {
public int removeDuplicates(int[] nums) {
int i = 0;
for(int n : nums) {
if(i < 2 || n > nums[i - 2]) {
nums[i] = n;
i++;
}
}
return i;
}
}
LeetCode题目:83. Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 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 cur = head;
while(cur != null && cur.next != null) {
if(cur.val == cur.next.val) {
cur.next = cur.next.next;
}
else {
cur = cur.next;
}
}
return head;
}
}
LeetCode题目:82. Remove Duplicates from Sorted List II
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 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 dummyHead = new ListNode(-1);
dummyHead.next = head;
ListNode pre = dummyHead;
ListNode cur = head;
while(cur != null) {
while(cur.next != null && cur.val == cur.next.val) {
cur = cur.next;
}
if(pre.next == cur) {
pre = pre.next;
}
else {
pre.next = cur.next;
}
cur = cur.next;
}
return dummyHead.next;
}
}
网友评论