标签:arrays sam elements ted examples original algo keep link
Given an unsorted integer array, remove adjacent duplicate elements repeatedly, from left to right. For each group of elements with the same value do not keep any of them.
Do this in-place, using the left side of the original array. Return the array after deduplication.
Assumptions
Examples
{1, 2, 3, 3, 3, 2, 2} → {1, 2, 2, 2} → {1}, return {1}
Soltuion 1:
public class Solution { public int[] dedup(int[] array) { // Write your solution here LinkedList<Integer> stack = new LinkedList<>(); int i = 0; while (i < array.length) { int cur = array[i]; if (!stack.isEmpty() && stack.peekFirst() == cur) { while (i < array.length && array[i] == cur) { i += 1; } stack.pollFirst(); } else { stack.offerFirst(cur); i += 1; } } int[] res = new int[stack.size()]; for (int j = res.length - 1; j >= 0; j--) { res[j] = stack.pollFirst(); } return res; } }
Soltuion 2:
public class Solution { public int[] dedup(int[] array) { // Write your solution here // incldue end result int end = -1; for (int i = 0; i < array.length; i++) { int cur = array[i]; if (end == -1 || cur != array[end]) { array[++end] = array[i]; } else { while (i + 1 < array.length && array[i + 1] == cur) { i += 1; } end -= 1; } } return Arrays.copyOf(array, end + 1); } }
[Algo] 118. Array Deduplication IV
标签:arrays sam elements ted examples original algo keep link
原文地址:https://www.cnblogs.com/xuanlu/p/12355423.html