首页 > 代码库 > 一月二十三日星期五

一月二十三日星期五

今天把昨天的demo稍微改进了下.因为是寻找重复数字,之前跑稍微大点的数组就会出现结果出来了可是程序还没有退出.用断点查看了下,发现原来是结果出来后还在遍历待检测数组.于是在遍历循环里加了一个判断,当重复数字数组列表元素等于设置的重复数字个数就退出for循环.发现看书的效率是比较高,遇到问题了随手就可以拿出来翻一翻.以后我要多翻多思考.平日自己编程时要注意细节,例如命名规范,变量初始化,输入判断,逻辑判断.目前在运算符方面还是比较生疏,昨天的demo卡了很久就是因为判断语句有着这样那样的错误.

 

demo是面试时的算法题,不满足要求.N很大是在构造单位数组会溢出.

 

import java.util.ArrayList;import java.util.Collections;import java.util.HashSet;import java.util.Scanner;public class FindNumber2 {    public static void main(String[] args) {        FindTest ct = new FindTest();        ArrayList<int[]> temp=ct.creat();        ct.findrepeated(temp);    }}class FindTest {    int size = 0;    ArrayList<Integer> allvaluelist = new ArrayList<Integer>();    @SuppressWarnings("resource")    public ArrayList<int[]> creat() {        HashSet<int[]> newlist = new HashSet<int[]>();        Scanner sc = new Scanner(System.in);        System.out.print("size?");        size = sc.nextInt();        for (int i = 0; i < size - 1; i++) {            newlist.add(new int[] {i+1});        }        newlist.add(new int[] { (int) (Math.random() * (size - 1) + 1) });//        System.out.print("newlist:");//        for (int[] value : newlist) {//            System.out.print(Arrays.toString(value));//        }        return new ArrayList<int[]>(newlist);    }            public void findrepeated(ArrayList<int[]> list) {        ArrayList<Integer> templist=new ArrayList<Integer>();        System.out.println("");        for(int i=0;i<size;i++){            allvaluelist.add(list.get(i)[0]);        }        Collections.sort(allvaluelist);//        System.out.println("allvaluelist:"+Arrays.toString(allvaluelist.toArray()));        for(int i:allvaluelist){            if(!templist.contains(i)){                templist.add(i);            }else{                System.out.println("repeatednum:"+i);                System.out.println("done!");                break;            }        }    }}

一月二十三日星期五