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. Excel文件导入导出(基于Nodejs、exceljs)

    Excel导入.导出是大多数项目的管理后台必备功能.几年来使用过多个该功能的实现包,最近一次开发该功能,突然发现一个人气极高(3000+)的包,这里记录一下使用方法. 大凡厉害的技术的文档咋一看都想字 ...

  2. Linux(CentOs 7)系统重装笔记(一)

    参考文章: https://www.jb51.net/article/95263.htm https://blog.csdn.net/JackLiu16/article/details/7988182 ...

  3. [vue开发记录]float label输入框

    上图: 组件代码: <!-- Created by Locke Ou on 2018/6/20. --> <template> <div> <div clas ...

  4. python转换图片格式

    在图片所在的路径下,打开命令窗口 bmeps -c picturename.png picturename.eps

  5. 发现了一个比较有意思的url参数

    今天登录阿里云发现需要二次验证了,手机号不是我的很麻烦,然后就看到有个手机app快捷登录的方式,点进去一看,链接地址是这样的http://qd.alibaba.com/onekey.htm?spm=0 ...

  6. webclient 操作超时

    Client.Headers.Add("user-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/ ...

  7. Java集合框架面试题目

    1.为什么Map接口不继承Collection 接口? Set是无序集合,并且不允许重复的元素 List是有序的集合,并且允许重复的元素 而Map是键值对 它被视为是键的set和值的set的组合 Ma ...

  8. OO第一单元表达式求导作业总结

    第一次作业 功能描述: 对输入的表达式进行求导计算和格式正误判断   思路: 一开始的想法是想写一个大正则找到一个通项式,通过这个多项式来判断WRONG FORMAT,结果发现正则写的总是不完善,会漏 ...

  9. 监听auduo标签播放

    <audio id="audio" controls="controls" loop="loop" style="displ ...

  10. python打包

    打包生成一个可执行文件(非窗口程序的) pyinstall -F  example.py