1、简介
在今天刷每日一题的时候看到的,感觉和以前自己写的向上取证的写法比起来好很多,在此记录。来源:1921. 消灭怪物的最大数量 - 力扣(LeetCode)
2、内容
1、Math.ceil() 此方法在任何整数相除时结果都正确
2、a%b==0?a/b:a/b+1 此方法在非负整数时正确
3、(a-1)/b+1 此方法在被除数不为0时正确
class Solution {
public static void main(String[] args) {
int a=2;
int a1=-2;
int a2=0;
int b=3;
System.out.println("===2/3===");
System.out.println((int)Math.ceil((double)a/b));
System.out.println(a%b==0?a/b:a/b+1);
System.out.println((a-1)/b+1);
System.out.println("===-2/3===");
System.out.println((int)Math.ceil((double)a1/b));
System.out.println(a1%b==0?a1/b:a1/b+1);
System.out.println((a1-1)/b+1);
System.out.println("===0/3===");
System.out.println((int)Math.ceil((double)a2/b));
System.out.println(a2%b==0?a2/b:a2/b+1);
System.out.println((a2-1)/b+1);
}
}
结果截图:
3、注意
Math.ceil写法最为保险,任何情况下结果都正确
三木运算,对于被除数<0,则不需要+1
对于(x-1)/y+1要对被除数为0的时候,进行特殊的判断,直接返回0;
写算法题,(x-1)/y+1比较好用,因为数据范围会少会有x=0的,需要注意