输入一串长度为N的整数数组,去除掉重复的元素,但是需要保留该元素最后出现的那个。
来源:互联网 发布:淘宝积分怎么获得 编辑:程序博客网 时间:2024/05/22 13:47
这是2017年网易实习生招聘的一道编程题
要求:输入一串长度为N的整数数组,去除掉重复的元素,但是需要保留该元素最后出现的那个。 例如:输入一串数组23,12 ,54 ,102 ,98,54,23,12; 则应输出:102,98,54,23,12 思路是:利用数组下标进行遍历,首先将该元素最后出现之前的各位置数据置0,然后将该数组中不为零的元素重新按照顺序存储至另一新数组中。 包含基本数据类型的转换问题。
示例1
import java.util.Scanner;public class test1 { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub int newNum = 0;//保存新数组的长度 /*通过new Scanner(System.in)创建一个Scanner,控制台会一直等待输入,直到敲回车键结束, *把所输入的内容传给Scanner,作为扫描对象。 *如果要获取输入的内容,则只需要调用Scanner的nextLine()方法即可。 */ Scanner sc=new Scanner(System.in); System.out.println("请输入一串整数并在输入时用英文逗号隔开:"); String inputString=sc.next().toString(); String stringArray[]=inputString.split(","); //将字符串按照“,”构成字符串数组 int num[]=new int[stringArray.length]; //定义一个int类型的数组,长度为字符串数组的长度 for(int i=0;i<stringArray.length;i++){ num[i]=Integer.parseInt(stringArray[i]); //将字符串数组中的字符串类型一一转换为int类型数组, } int leng =num.length; //int类型数组的长度 System.out.println("变换1后的数组为:" ); for(int i = 0; i<leng-2 ; i++){//从0到leng处遍历 for(int j =1; j< leng ; j++){//从0到leng处遍历 if(num[i] == num[j]) //比较两次遍历的结果,如果相等,则进行下一步 { if(i<j) num[i] = 0; /*比较下标,如果第一次遍历的下标小于第二次遍历的下标, 则将第一次遍历的元素设置为0, *即将数组中重复的元素设置为0,并保留那个最后出现的元素及位置 */ } } } for(int i = 0; i<leng ; i++){ System.out.print(num[i]+" "); } System.out.println("最终的数组为:" ); for(int i = 0; i<leng ; i++){ if(num[i]!=0){ System.out.print(num[i]+" "); newNum++; } }//这部分只是将不为0的元素按顺序打印出来,但是数组中仍然包含0元素 //将变化后的数组保存到另一个数组中。 int [] newarrayData = new int[newNum]; int j=0; for(int i= 0;i<num.length;i++) { if(num[i]!=0){ newarrayData[j] = num[i]; j++; } } for(int i = 0; i<newarrayData.length;i++){ System.out.println(newarrayData[i]+" "); } }}
输出结果:
请输入一串整数并在输入时用英文逗号隔开:1,2,3,45,91,109,3,45,1,10910变换1后的数组为:0 2 0 0 91 0 3 45 1 109 变换2后的数组为:2 91 3 45 1 109 2 91 3 45 1 109
示例2
import java.io.BufferedReader; import java.io.InputStreamReader; public class test2 { public static void main(String[] args) throws Exception { int newNum = 0; System.out.println("请输入一个长度为N的整数序列,并用空格隔开" ); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); String [] stringArray = str.split(" "); int num[]=new int[stringArray.length]; for(int i=0;i<stringArray.length;i++){ num[i]=Integer.parseInt(stringArray[i]); } int leng =num.length; System.out.println("变换1后的数组为:" ); for(int i = 0; i<leng-2 ; i++){ for(int j =1; j< leng ; j++){ if(num[i] == num[j]) { if(i<j) num[i] = 0; } } } for(int i = 0; i<leng ; i++){ System.out.print(num[i]+" "); } System.out.println("\n"+"变换2后的数组为:" ); for(int i = 0; i<leng ; i++){ if(num[i]!=0){ System.out.print(num[i]+" "); newNum++; } } //将变化后的数组保存到另一个数组中。 int [] newarrayData = new int[newNum]; int j=0; for(int i= 0;i<num.length;i++) { if(num[i]!=0){ newarrayData[j] = num[i]; j++; } } for(int i = 0; i<newarrayData.length;i++){ System.out.print(newarrayData[i]+" "); } }} 示例2与示例1区别在与,示例2 使用BufferedReader从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
0 0
- 输入一串长度为N的整数数组,去除掉重复的元素,但是需要保留该元素最后出现的那个。
- 移除掉数组里面的重复元素, 但是对于每种元素保留最后出现的那个
- 网易之小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个
- 每天一道LeetCode-----给定大小为n+1的数组,元素大小在[1 : n]之间,只有一个元素会重复出现多次,找到重复的那个
- 找出数组中重复的元素,或者丢失的元素,前提,数组长度N,元素为1到N
- 去除数组维数n,元素为1--n的任意整数的重复整数
- 除掉数组中重复元素的简单方法
- 在一个长度为10的整形数组中,已经放置好了任意10个整数。要求用户任意输入 一个整数,判断该数字是否在数组中。如果在,删除数组中该元素,并把后面的 元素往前挪。(让空出的位置在最后)
- 有序数组长度为N 元素出现的长度为 大于等于 N 除 4 的最小的数
- 寻找长度为n数组中出现次数超过n/2的元素
- 输入一个数组,对数组进行排序,并输出该数组中重复元素出现的次数
- 取值为[1,n-1]含n个元素的整数数组至少存在一个重复数,找出一个重复元素
- 求一个长度为n的整型有序数组中是否有出现次数超过n/2的元素
- 已知一支白菜连续n天的价格走势,以长度为n的整数数组表示,数组中第i个元素(prices[i])代表该白菜第i天的
- Java实现单链表(已排序)去重(保留重复元素第一次出现的节点)
- 给定整数数组,除了一个元素之外,每个元素都出现三次。 找到那个只出现一次的数
- 给定整数数组,除了一个元素之外,每个元素都会出现两次。 找到那个只出现一次的
- C++ - 一个非递减数组,下标从0到n,元素的取值范围为从0到n的整数,判断其中是否有重复元素
- Handler 接收Parcelable ArrayList时返回空指针
- iOS 游戏app的开发
- Spring MVC 注解基本配置及@controller和 @RequestMapping 常用解释
- ASP+Access 怎么利用一个搜索语句的结果做另一个搜索语句的字段来搜索?
- ecplise启动报错
- 输入一串长度为N的整数数组,去除掉重复的元素,但是需要保留该元素最后出现的那个。
- 02-JZ2440裸机学习之存储管理器
- couldn't parse contents of 'xxx/Info.plist': The data couldn’t be read because it isn’t in the cor
- 有个问题 弄不了了 水平不够,请高手来拉我一把
- 英文藏头诗
- 清华大学为您解读工业4.0
- PyCharm显示控制台调试程序
- 性能优化:使用新版Android Studio检测内存泄露和性能
- tomcat启动报错Perhaps it exists but certain dependencies are not available, 求大神