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;
    }

LintCode 521.去除重复元素的更多相关文章

  1. Python列表去除重复元素

    主要尝试了3种列表去除重复元素 #2.去除列表中的重复元素 #set方法 def removeDuplicates_set(nums): l2 = list(set(l1)) #用l1的顺序排序l2 ...

  2. java集合 collection-list-ArrayList 将自定义对象作为元素存到ArrayList集合中,并去除重复元素。

    import java.util.*; /* 将自定义对象作为元素存到ArrayList集合中,并去除重复元素. 比如:存人对象.同姓名同年龄,视为同一个人.为重复元素. 思路: 1,对人描述,将数据 ...

  3. php将多个值的数组去除重复元素

    array_unique(array) 只能处理value只有单个的数组. 去除有多个value数组,可以使用如下函数实现: function more_array_unique($arr=array ...

  4. ArrayList去除重复元素(多种方法实现)

    package other; import java.util.ArrayList; import java.util.HashSet; public class test4 { public sta ...

  5. [C++]vector去除重复元素

    #include <iostream> #include <vector> #include <algorithm> #include <set> us ...

  6. C语言两个升序递增链表逆序合并为一个降序递减链表,并去除重复元素

    #include"stdafx.h" #include<stdlib.h> #define LEN sizeof(struct student) struct stud ...

  7. ArrayList去除重复元素(包括字符串和自定义对象)

    1.去除重复字符串 package com.online.msym; import java.util.ArrayList; import java.util.Iterator; @SuppressW ...

  8. 使用HashSet<>去除重复元素的集合

    比如,某一个阵列中,有重复的元素,我们想去除重复的,保留一个.HashSet<T>含不重复项的无序列表,从MSDN网上了解到,这集合基于散列值,插入元素的操作非常快. 你可以写一个方法: ...

  9. ArrayList去除重复元素

    去除一个ArrayList的重复元素有两种方法:(ArrayList与Vector的存储结构是Object[],LinkedList是双向列表) 第一种是不需要借助临时list,用equals方法比较 ...

随机推荐

  1. 微信小程序区分点击,长按事件

    在上代码之前,微信小程序点击事件,长按事件的触发顺序需要我们了解一下下 事务分类 touchstart:手指触摸 longtap:手指触摸后后,超过350ms离开 touchend:手指触摸动作结束 ...

  2. oracle学习笔记第二天

    一.连接查询 --笛卡尔积(表 * 表),连接的基础select * from emp,dept;--等值连接select * from emp e,dept d where e.deptno = d ...

  3. numpy(五)

    排序: x=np.array([2,5,6,2,3,5]) np.sort(x)  不改变原数组 x.sort() 改变原数组 i=np.argsort(x) 返回排序好的索引值 x[i] 使用花哨索 ...

  4. 写一个方法,用于解读 url 后面的请求参数,最终得到 {"a":2,"b":3,"c":4};

    function getUrlParams(url){ let searchParam = url.split("?")[1]; let searchItemParams = se ...

  5. python报错记录

    1.AttributeError: 'NoneType' object has no attribute 'group' import re s=r'<title>kobe<\tit ...

  6. tensorflow(4)踩过的一些坑

    版本问题 1.1 版本的一个BUG ValueError: Variable rnn/basic_lstm_cell/weights already exists, disallowed. 结合这个文 ...

  7. 2017UGUI之slider

    不让鼠标控制slider的滑动: 鼠标之所以可以控制滑动是因为slider具有interactable这个属性(下图红色的箭头的地方):如果取消了这个属性的运行的时候就不能滑动了.如果要代码去控制这个 ...

  8. if语句&switch&Scanner

    if流程控制语句: if 语句的用语法如下: if(boolean表达式){ //如果条件为true那么执行 } 只有条件为true时才会执行,否则执行if语句后面的代码. 实例代码: public ...

  9. CentOS 7 Squid代理服务器正向代理-透明代理

    Squid是Linux系统中最常用的一款开源代理服务软件,主要提供缓存加速和应用层过滤控制的功能,可以很好的实现HTTP.FTP.DNS查询以及SSL等应用的缓存代理 透明代理:提供与传统代理相同的功 ...

  10. CentOS7中GreVPN的配置

    目前只实现了三层的GRE隧道,但其实二层也可以实现的,但是没有找到很好的方法,待研究 环境如下: host A :  121.207.22.123 host B: 111.2.33.28 1. 在ho ...