数组元素去重

问题描述:请实现一个算法,返回一个数组,该数组是移除了原数组中的重复元素,并保持元素的顺序。

例如:输入:2,1,2,3,-9,5,-9,10,

输出:2,1,3,-9,5,10,

Java代码如下:

 1 import java.util.*;
 2  class ChuChong {
 3   public static int[] removeDuplicates(int[] array) {
 4     Map<Integer, Boolean> map = new HashMap<Integer, Boolean>();   //用来存放不重复的数组元素值,其中key为数组元素值,value为标志位,true表示存在,false表示不存在
 5     List<Integer> values = new ArrayList<Integer>();               //存放不重复元素值
 6
 7     for (int value : array) {
 8       if (map.containsKey(value))                                 //判断每个数组值是否在集合map中,如果在,则跳过该数值,否则将其添加到集合map中
 9         continue;
10
11       map.put(value, true);
12       values.add(value);
13     }
14
15     int[] result = new int[values.size()];
16     for (int i = 0; i < values.size(); i++) {                    //将结合values中的元素复制到定长数组中
17       result[i] = values.get(i);
18     }
19     return result;                                              //返回所求数组的引用
20   }
21 }
22
23 public class Main {
24     public static void main(String[] args) {
25         int[] a={2,1,2,3,-9,5,-9,10};
26         System.out.print("原数组为:");
27         for(int i=0;i<a.length;i++)
28             System.out.print(a[i]+",");
29         System.out.println();
30         System.out.print("去除重复值后的数组为:");
31        int[] b= ChuChong.removeDuplicates(a);
32        for(int i=0;i<b.length;i++)
33             System.out.print(b[i]+",");
34     }
35
36 }

输出结果为:

原数组为:2,1,2,3,-9,5,-9,10,
去除重复值后的数组为:2,1,3,-9,5,10,

时间: 2024-08-03 13:31:20

数组元素去重的相关文章

JS中数组对象去重

JS数组去重 JS中对数组去重最好不要用unique方法,该方法主要是对dom节点数组的去重,如果对普通的数组元素去重只会去掉与之相邻的重复元素,也就是如果数组中还有不相邻的重复元素存在,将不会被去掉,而且有时候会出现问题,所以对数组去重可以利用如下方法: 先对数组a进行遍历,同时创建一个新的数组对象arr for (var i=0 ;i<a.length;i++) {    if (arr.indexOf(a[i]) == -1) { arr.push(a[i]) } } 经过这样处理后的数组

js 数组去重(数组元素是对象的情况)

js数组去重有经典的 几种方法 但当数组元素是对象时,就不能简单地比较了,需要以某种方式遍历各值再判断是否已出现. 因为: 1.如果是哈希判断法,对象作哈希表的下标,就会自动转换成字符型类型,从而导致所有元素都相等,这时判断方法不再有意义.一般最后数组就只剩一个 2.如果是直接比较法,则因为对象在内存中是按引用访问的,属性值相同的对象也不会相等,简单的直接判断不再有意义.一般最后数组还是原样 所以就需要进行值的比较 当然了,也可以换着法来将相应对象转为字符串(不是默认的那种[object Obj

iOS数组的去重,判空,删除元素,删除重复元素 等

一: 去重 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的. 示例代码: NSArray *arr = @[@111,@222,@111]; NSMutableDictionary

javascript 常见数组操作( 1、数组整体元素修改 2、 数组筛选 3、jquery 元素转数组 4、获取两个数组中相同部分或者不同部分 5、数组去重并倒序排序 6、数组排序 7、数组截取slice 8、数组插入、删除splice(需明确位置) 9、数组遍历 10、jQuery根据元素值删除数组元素的方)

主要内容: 1.数组整体元素修改 2. 数组筛选 3.jquery 元素转数组 4.获取两个数组中相同部分或者不同部分 5.数组去重并倒序排序 6.数组排序 7.数组截取slice 8.数组插入.删除splice(需明确位置) 9.数组遍历 10.jQuery根据元素值删除数组元素的方法 数组常见操作包含了 增.删.查.改.插入.交集.并集 1.数组整体元素修改 //map,给数组每个元素加1 输出[1,2,3] $.map([0,1,2],function(n){ return n+1; })

数组的去重,以及随机一个验证码

一 数组的去重 代码如下: var arr=[1,1,1,12,2,3,4,4,5]; function quchong(arrtest){ var arrkong=[]; // var 一个空数组,用于存储不重复的内容 for(var i=0;i<=arrtest.length;i++){ //循环遍历数组中的每一个元素 if(arrkong.indexOf(arrtest[i])<0){ // 将不重复的元素,即indexof <0 的数取出 arrkong.push(arrtest

list数组归并去重

C#两路list数组归并去重 个相同类型已排序数据进行合并,虽然list数组中有AddRange方法,但它只是把第二个数组从第一个数组末尾插入,假如两个数组有重复数据,保存进去.还有Union方法合并去重,首先会从第一个数组进行检查然后再把第二个数组数据从第一个数组依次从末尾插入,但相对于自定义类型排序还是不能有效解决问题. 归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用.将已有序的子序列合并,得到完全有序的序列:即

iOS 数组的去重(普通的无序的去重和排序好的去重)

本文转载至 http://blog.csdn.net/zhaopenghhhhhh/article/details/24972645 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDictionary的AllKeys(AllValues)方法 可以将NSArray中的元素存入一个字典,然后利用AllKeys或者AllValues取得字典的所有键或值,这些键或值都是去重的

数组的去重方法

在数组中有时候会有重复元素,而我们并不需要因此就需要对数组进行去重. 去重的方法很多,这里几种是自己易于理解的几种方法. 1.先来最简单的方法 利用ES6提供的新的数据结构set.它类似于数组,但是它的元素值是唯一的,没有重复的. 1 let arr = [1,1,1,1,1,1,2,3,4,1,2,3,4] 2 arr = Array.from(new Set(arr)) 3 console.log(arr) 4 // [ 1, 2, 3, 4 ] 2.利用字符串的indexOf()方法.这个

交通银行太平洋信用卡中心的面试题:数组怎么去重?

7种方法实现数组去重 前言 去重是开发中经常会碰到的一个热点问题,不过目前项目中碰到的情况都是后台接口使用SQL去重,简单高效,基本不会让前端处理去重. 那么前端处理去重会出现什么情况呢?假如每页显示10条不同的数据,如果数据重复比较严重,那么要显示10条数据,可能需要发送多个http请求才能够筛选出10条不同的数据,而如果在后台就去重了的话,只需一次http请求就能够获取到10条不同的数据. 当然,这并不是说前端去重就没有必要了,依然需要会熟练使用.本文主要介绍几种常见的数组去重的方法. 方法