• [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);
      }
    }
  • 相关阅读:
    Ubuntu 12.04 git server
    Moonlight不再继续?!
    Orchard 视频资料
    一恍惚八月最后一天了
    Box2D lua binding and Usage
    50岁还在编程,也可以是一种成功
    DAC 4.2 发布
    再次祝贺OpenStack私有云搭建成功
    vue项目快速搭建
    pdf.js使用详解
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12355423.html
Copyright © 2020-2023  润新知