首页 > 代码库 > 一月二十三日星期五
一月二十三日星期五
今天把昨天的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; } } }}
一月二十三日星期五
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。