zoukankan      html  css  js  c++  java
  • [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);
      }
    }
  • 相关阅读:
    WordPress在nginx服务器伪静态
    excel根据一列的值匹配另一列
    linux上安装Anaconda并创建python虚拟环境
    python模块学习之numpy
    大数据测试工具
    python学习路线
    spark event log
    夏令时
    spark学习指南
    Yarn和Spark对比
  • 原文地址:https://www.cnblogs.com/xuanlu/p/12355423.html
Copyright © 2011-2022 走看看