day29_0527
选择题
妥妥的面向对象编程
存入HashSet的对象必须实现hashCode()和equals()。如果子类的hashCode()值相等,equals()也相等,就确定为相等,即重复元素。
在Java语言的异常处理中,finally块的作用就是为了保证无论出现什么情况,finally块里的代码一定会执行。
由于程序执行return就意味着结束了对当前函数的调用并跳出这个函数体,因此任何语句执行都要放在return前执行(除非碰到exit函数),因此finally块里面的函数也是在return前执行的。
如果try-finally或者catch-finally中都有return语句,那么finally中的return语句会覆盖别处的,最终返回到调用者那里的是finally中的return值。
类名 变量名= new 类名()
ClassnName是类名,varName是变量名,类名在变量名之前
用static修饰的所以不会出错;
编程
求正数数组的最小不可组成和
public int getFirstUnFormedNum(int[] arr) { int max=0; int min=arr[0]; for(int i=0;i<arr.length;i++){ max+=arr[i]; min=Math.min(arr[i],min); } boolean[] b=new boolean[max+1]; b[0]=true; for(int i=0;i<arr.length;i++){ for(int j=max;j>=arr[i];j--){ //如果b[j]本身存在于arr中 // 或b[j-arr[i]]存在就返回true; //因为b[j]可能是累加出来的; b[j]=b[j-arr[i]]||b[j]; } } for(int i=min;i<max+1;i++){ if(!b[i]){ return i; } } return max+1; } }
有假币
当硬币只有1个 0次
硬币有2个 1次
硬币有3个 1次
硬币有4个 2次
所以次数是在3的基础上改变的
import java.util.Scanner; import java.lang.Math; public class Main{ public static void main(String[] args){ Scanner sc=new Scanner(System.in); while(sc.hasNextInt()){ int n=sc.nextInt(); if(n!=0){ int count =0; while(n>=3){ count++; if(n%3==0){ n=n/3; }else{ if(n%3>=1){ n=(n/3)+1; } } } if(n>1){ count++; } System.out.println(count); // System.out.println(Coin(n)); } } } public static int Coin(int n){ if(n==1){ return 0; } if(n<=3){ return 1; } int x=(n+2)/3; int y=n-2*x; return 1+Coin(Math.max(x,y)); } }