一维数组中重复元素的去除

  • 前言
  • 一、基本思路
  • 二、步骤
    • 1.设置判断数组Arr[ ]:
    • 2.继承数组newArr[ ]获取不重复元素
  • 总结

前言

关于一维数组中有重复的元素该怎么剔除,作为java初学者的我整理出不调用任何特殊库的基础方法,这种思想在其他语言也适用。

一、基本思路

首先,假设一个一维数组arr[ ]={ 4, 3, 35, 3, 2, 4, 6, 3},其中有三个重复元素 3,4,3。要如何剔除呢,由于还没有涉猎到一些经典的调用,所以我选择了用新的数组newArr[ ]去继承原来数组中的不重复的元素,另外还需要一个判断数组Arr[ ],来判断arr[ ]中哪几个元素是重复的,才好去除掉。
.

二、步骤

1.设置判断数组Arr[ ]:

代码如下(示例):

int[] arr = { 4, 3, 35, 3, 2, 4, 6, 3 };int[] Arr = new int[arr.length];for (int i = 0; i < arr.length-1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {Arr[j] = 1;         //把Arr中元素下标和arr中元素下标一致的元素,赋值为1,来标记判断重复元素的位置(下标)}}}`// //测试一下相同元素的位置for (int i = 0; i < Arr.length; i++) {System.out.print(Arr[i]);

初始化一个长度和arr相同的数组Arr={0,0,0,0,0,0,0,0},用两层嵌套for循环来判断各重复元素:外层循环控制比较轮数,内层循环控制不同的两个元素之间的比较。(其实总体过程就是首先第一个元素和后面比较是否重复,然后第二轮是从第二个元素开始依次和右边剩下的各个元素开始比较,第三轮…第n轮…

eg: i=0时,进入外层循环,第一轮比较:以arr[i]=arr[0]=4为基准开始比较,
进入内层循环,再进行比较:
(1)arr[j]=arr[i+1]=arr[1]=3,3!=4,不重复,
(2)arr[j+1]=arr[i+2]=arr[2]=35,35!=4,不重复,
(3)arr[j+2]=arr[i+3]=arr[3]=3, 3!=4,不重复 ,
(4)arr[j+3]=arr[i+4]=arr[4]=2, 2!=4,不重复 ,
(5)arr[j+4]=arr[i+5]=arr[5]=4, 4==4,重复

此时找到了一个重复的元素4,然后同样的
i=1时,以arr[i]=arr[1]=3为基准进入第二轮比较,可以找到重复元素arr[3]=3,arr[7]=3,都是重复元素
i=…时,一直重复arr.length(数组的长度)轮比较,最终找出重复元素只有三个,就是3,4,3。
注意到: // //测试一下相同元素的位置
for (int i = 0; i < Arr.length; i++) {
System.out.print(Arr[i]);
其实这一步不必要,但是为了直观显示出重复元素的位置,我输出了判断数组Arr,输出结果是 0 0 0 1 0 1 0 1,很清晰的看出原数组arr中哪三个位置的元素重复了

2.继承数组newArr[ ]获取不重复元素

就是剔除重复元素的步骤

 System.out.println();int count = 0;for (int i = 0; i < Arr.length; i++) {if (Arr[i] == 0) {count++;}System.out.println("不重复元素的个数有" + count + "个");int[] newArr = new int[count];

(1)遍历判断数组Arr[ ],遍历到0元素的时候,计数器count+1,count数就是不重复元素个数,就是继承数组newArr[ ]的长度。
(2) 设置计数器 index 初始化=0,for循环遍历判断数组Arr[ ],通过if条件语句。如果Arr[ ]=0,说明在该位置下的原数组元素是不重复的,则执行newArr[index++] = arr[i];(把原数组中不重复的元素继承给newArr)

int index = 0;for (int i = 0; i < Arr.length; i++) {if (Arr[i] == 0) {newArr[index++] = arr[i];}
}for (int i = 0; i < newArr.length; i++) {System.out.print(newArr[i] + " ");}

(3)for循环遍历继承数组newArr[ ],输出结果就是去除重复元素后的最终结果。

总结

关键词 :
判断数组Arr[ ]:判断数组中重复元素的位置(下标)。
继承数组newArr[ ]:继承去掉重复元素后剩下不重复的数组元素。
(以上两个数组都是我自己方便理解取的名字)
以上就是我要介绍的全部内容,由于水平有限难免会有纰漏,希望能帮助到大家,大佬们欢迎批评指正。
附上完整代码:

public class Array {public static void main(String[] args) {int[] arr = { 4, 3, 35, 3, 2, 4, 6, 3 };int[] Arr = new int[arr.length];//<arr.length-1防止数组越界for (int i = 0; i < arr.length-1; i++) {for (int j = i + 1; j < arr.length; j++) {if (arr[i] == arr[j]) {Arr[j] = 1;}}}// //测试一下相同元素的位置for (int i = 0; i < Arr.length; i++) {System.out.print(Arr[i] + " ");}System.out.println();int count = 0;for (int i = 0; i < Arr.length; i++) {if (Arr[i] == 0) {count++;}}System.out.println("不重复元素的个数" + count);int[] newArr = new int[count];int index = 0;for (int i = 0; i < Arr.length; i++) {if (Arr[i] == 0) {newArr[index++] = arr[i];}}System.out.println("去除掉重复元素后的数组:");for (int i = 0; i < newArr.length; i++) {System.out.print(newArr[i] + " ");}}
}

输出结果:

一维数组中重复元素的去除相关推荐

  1. Js数组中重复元素的去除办法

    一.利用数组内置对象indexOf方法进行去除 1.首先要先通过for循环遍历出旧数组,通过indexOf方法来判断新数组中是否有该元素 2.indexOf方法会对元素在数组中的进行查询,如果元素中有 ...

  2. 如何统计二维或者多维空间/二维数组中重复元素的数量/计数?numpy一行代码就行了

    文章目录 1. 问题说明 2. 解决之道 3. 向原作者致敬 Reference 1. 问题说明 统计一维数组中重复元素的数量是个常见的问题,那么拓展到二维或者更高维度,这个问题依然是常见的.有什么方 ...

  3. 求栈中元素个数算法_Algorithm 大家都会的去除有序数组中重复元素的三种算法...

    问题描述 给定一个有序数组,要删除数组重复出现的元素,使得每个元素之出现一次,然后返回移除重复数组后的新长度: 示例: 给定数组 nums = [1,2,4,4],删除重复出现的元素后,原数组变成 n ...

  4. JS JavaScript中去除数组中重复元素的方法

    JS JavaScript中去除数组中重复元素的方法 感觉比较好理解的3种方法,总结一下,大家共同学习 方法一: Array.prototype.method1 = function(){ var a ...

  5. JS中去除数组中重复元素的方法

    JS中去除数组中重复元素的方法 第一种方法:使用数组中的splice方法 splice():删除元素,并向数组添加新元素,并返回被删除的元素 function f1(){var _arr=[8,5,0 ...

  6. java中去除数组中重复元素的方法

    题目 请设计一个方法,将一个int数组arr中重复的元素去除,并且返回新数组newArr. 解法一 保留重复数字中的第一次出现的元素 首先建立一个与原数组等长的标记数组flag[],它的下标与原数组下 ...

  7. java删除数组中重复元素

    id="BAIDU_DUP_fp_iframe" src="https://pos.baidu.com/wh/o.htm?ltr="> > src= ...

  8. 用指针、子函数的方法去一维数组中所有元素的平均值,并放在a[0]处

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容7]用指针.子函数的方法去一维数组中所有元素的平均值,并放 ...

  9. 用子函数的方法求一维数组中所有元素之和

    <程序设计基础实训指导教程-c语言> ISBN 978-7-03-032846-5 p142 7.1.2 上级实训内容 [实训内容2]用子函数的方法求一维数组中所有元素之和 #includ ...

最新文章

  1. Linux有问必答:如何安装autossh
  2. 部署了OpenStack就拥有了云平台?还差很远呢
  3. gRaphael——JavaScript 矢量图表库:两行代码实现精美图表
  4. Angular router-outlet占位符层级结构的子节点,运行时是如何插入的
  5. mysql 存储过程 查询结果 循环_在存储过程中从查询结果集中怎么循环
  6. Python语法异常 Exception
  7. i.e., e.g., etc.
  8. 大数据分析四大分析要素
  9. Pizza Separation
  10. (转) Java线程池实现原理及其在美团业务中的实践
  11. 批量微信号码过滤程序
  12. 2022年Gartner新兴技术、人工智能技术成熟度曲线概述
  13. Matter协议特性解析(一) 支持非Matter协议,私有协议,Matter Bridge技术分析
  14. 墙面有几种装修方法_外墙有几种装修方法
  15. java 假设检验_Spark机器学习-Java版(二)-相关系数和假设检验
  16. 动态网站CDN是如何加速的?
  17. 昆明理工大学计算机技术英语翻译,昆明理工大学自动化专业英语翻译学习指导书.ppt...
  18. 如何成为一门领域的专家2
  19. NAT ,BFD ,NQA 实验
  20. Hi3515移动侦测技术的设计与实现

热门文章

  1. i5 12400f和i5 12600kf参数对比
  2. python好看图案的编程代码_只需15行Python代码,实现图像定位功能
  3. poi生成excel整理(设置边框/字体/颜色/加粗/居中/)
  4. 瞪羚企业申报流程材料
  5. 网上打印纳税申报表等预览有网格打印不显示
  6. 团队管理2 | 管理的天时、地利、人和
  7. 算符优先分析法-java实现
  8. webpack 简单使用
  9. webpack初识体验demo
  10. MySQL数据库基础--数据管理