JAVA代码—算法基础:找出整形数组中只出现过1次的两个元素
2018-02-01 23:02
549 查看
找出整形数组中只出现过1次的两个元素
一个整形数组中,除了两个数字之外,其它数字都出现了两次。写一个程序,求出只出现了一次的数字。
例如:数组元素为 4,2,8,3,4,5,8,7,7,2
上述数组中元素3和元素5只出现了一次。
package com.bean.algorithmexec; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.util.HashMap; import java.util.Map; import java.util.Scanner; import java.util.Set; public class FindOnlyOneElementDemo { /* * 一个整形数组中,除了两个数字之外,其它数字都出现了两次。 * 写一个程序,求出只出现了一次的数字。 * * 例如:数组元素为 4,2,8,3,4,5,8,7,7,2 * 上述数组中元素3和元素5只出现了一次。 * */ static int T=0; /* * 方法名称:findNumsAppearOnce * num1,num2分别为长度为1的数组。传出参数 * 将num1[0],num2[0]设置为返回结果 * * */ public static void findNumsAppearOnce(int [] array,int num1[] , int num2[]) { //如果array数组长度为0或者数组为空,则直接返回 if(array == null || array.length == 0) return; /* * 用一个map来装没有出现过的数,如果map中已经有这个数了,就说明这个数是第2次出现了, * 所以把这个数从map中remove掉,这样遍历一遍后map中就只会剩下只出现一次的那两个值。 * */ Map<Integer,Integer> map = new HashMap<Integer,Integer>(); int len = array.length; for(int i = 0; i < len; i++){ if(map.containsKey(array[i])){ map.remove(array[i]); }else{ map.put(array[i],1); } } Set<Integer> keys = map.keySet(); int index = 0; for(Integer key :keys){ if(index == 0){ num1[0] = key; index++; }else{ num2[0] = key; } } } public static void main(String[] args) throws FileNotFoundException { // TODO Auto-generated method stub System.setIn(new FileInputStream("G:\\findonlyoneelement.txt")); Scanner sc = new Scanner(System.in); int Answer=0; //读取测试用例组数 T=sc.nextInt(); for(int i=0;i<T;i++) { //读取数组元素个数 int length=sc.nextInt(); //声明数组 int[] numbers=new int[length]; for(int m=0;m<length;m++) { //读取整形数组元素 numbers[m]=sc.nextInt(); //System.out.print(numbers[m]+"\t"); } //System.out.println(); int[] num1=new int[1]; int[] num2=new int[1]; findNumsAppearOnce(numbers,num1,num2); System.out.println("1st: "+num1[0]+"\t2nd: "+num2[0]); } } }
(完)
相关文章推荐
- JAVA代码—算法基础:计算已排序的数组中不重复的元素个数
- 找出一个整形数组的所有元素除了一个、两个、三个元素外,其余全是成对出现的,找出这些元素
- 基础算法----找出集合中最大和值的子数组,插入排序,找出数组中出现最多的元素
- JAVA代码—算法基础:找出一维数组中重复次数最多的元素以及重复的次数
- [JAVA]给定两个整形数组,并找出其中共同的元素
- 一个数组中,除两个元素其余都出现了两次,找出这两个元素
- 【白话经典算法系列之十二】数组中只出现1次的两个数字(百度面试题)
- 一个数组中,除两个元素其余都出现了两次,找出这两个元素
- 算法习题61:找出数组中两个只出现一次的数字:一个整型数组里除了两个数字之外,其他的数字都出现了两次
- 算法-找出其他出现偶数次的数组中出现1次,2次,3次的数
- 两个有序整形数组找出二者相同的元素和不同的元素
- 【算法】数组中只出现1次的两个数字(百度面试题)
- 【白话经典算法系列之十二】数组中只出现1次的两个数字(百度面试题)
- 程序员面试100题(算法)之找出数组中两个只出现一次的数字(位运算实现)
- 面试题:在一个数组中除两个数字只出现1次外,其它数字都出现了2次, 要求尽快找出这两个数字
- 算法之找出数组中出现次数大于n/m的元素
- 每天一道算法题10 找出数组中两个只出现一次的数字
- 【算法14】找出数组中两个只出现一次的数字
- 程序员面试题目总结--数组(二)【二分查找、找出给定数字出现次数、两个有序整型数组交集、找出数组中唯一的重复元素、判断数组中的数值是否连续相邻】
- 每天一道算法题-1 找出数组中两个只出现一次的数字