每日训练-day29

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));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值