首页 > 代码库 > Java算法——数组

Java算法——数组

 * 已知一个数组int[98],该数组里面存储了0~99共100个数字中的98个,数字不重复,请用算法算出0~99中缺少的2个数字是哪两个?
 * 要求:数组自己用程序生成,数值介于0~99,相互之间不重复

思路:

1.通过一个Set集合产生一个包含0~99的数组

2.移除2个元素后,把Set集合转成数组arr

3.对数组进行遍历比较,用标志flag判断缺少的2个数,否的话置为false。

4.定义一个临时list存放缺少的2个数

代码如下:

package com.itheima.bbs;import java.util.ArrayList;import java.util.List;import java.util.Set;import java.util.TreeSet;public class RandomArrayDemo {    public static void main(String[] args) {        //通过Set集合产生一个数组arr        Set<Integer> treeSet = new TreeSet<Integer>();        for (Integer i = 0; i < 100; i++) {            treeSet.add(i);        }        treeSet.remove(0);        treeSet.remove(99);        Integer[] arr = new Integer[treeSet.size()];        treeSet.toArray(arr);                //对数组进行遍历,并和0~99之间的数比较        List list = new ArrayList();//临时容器,存放缺少的2个数        for (int i = 0; i < 100; i++) {            boolean flag = false;            for (int j = 0; j < arr.length; j++) {                if (i == arr[j]) {                    flag = true;                    break;                }            }            if (!flag) {                list.add(i);            }        }        System.out.println("缺少的两个数字是:" + list);    }}

 

Java算法——数组