[Algo] 118. Array Deduplication IV

Posted xuanlu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Algo] 118. Array Deduplication IV相关的知识,希望对你有一定的参考价值。

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

  • The given array is not null

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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 118. Pascal's Triangle (杨辉三角)

php 函数小技巧

PHP加密与解密

刷题顺序表 Array

程序中的杂散“\303”和杂散“\215”——为啥?

快排_Java