标签:
今天把昨天的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; } } } }
标签:
原文地址:http://www.cnblogs.com/zsy0917/p/4245129.html