zoukankan      html  css  js  c++  java
  • LintCode 521.去除重复元素

    LintCode 521.去除重复元素

    描述

    给一个整数数组,去除重复的元素。

    你应该做这些事

    1.在原数组上操作
    2.将去除重复之后的元素放在数组的开头
    3.返回去除重复元素之后的元素个数

    挑战

    1.O(n)时间复杂度.
    2.O(nlogn)时间复杂度但没有额外空间

    答案

    • 使用Map存储。时间复杂度O(n),空间复杂度O(n)

      public int deduplication(int[] nums) {
          // write your code here
          HashMap<Integer, Integer> map = new HashMap<>();
          int i = 0, j = nums.length - 1;
          while (i <= j) {
              if (map.get(nums[i]) == null) {
                  map.put(nums[i], 1);
              } else {
                  map.put(nums[i], map.get(nums[i]) + 1);
              }
              if (map.get(nums[i]) > 1) {
                  int t = nums[i];
                  nums[i] = nums[j];
                  nums[j] = t;
                  j--;
              } else {
                  i++;
              }
          }
          return map.size();
      }
      
    • 排序后用双指针

      public int deduplication(int[] nums) {
          Arrays.sort(nums);
      
          int i = 0, j = 1;
          while (j < nums.length) {
              if(nums[j] != nums[i]) {
                  int t = nums[i];
                  nums[i] = nums[j];
                  nums[j] = t;
              }
              j++;
          }
          return i+1;
      }
      
  • 相关阅读:
    Eclipse安装aptana
    mysql获取下一篇和上一篇文章的ID
    Java回顾之Spring基础
    纯CSS实现各类气球泡泡对话框效果
    百度编辑器ueditor的简单使用
    实施接口
    Java快速教程
    Java GUI程序设计
    JAVA之关于This的用法
    Java 数组基础
  • 原文地址:https://www.cnblogs.com/wuxie0ne/p/10709982.html
Copyright © 2011-2022 走看看