Java:一组数能排几行

如果现在给你出道题,有一个30人的队伍,希望你以每8人为一排排成行,能有多少行,你怎么来写这个表达式呢?

 

早先我用的笨方法就是:

public static void main(String[] args) {
		int sum = 30;
		int row = sum >> 3; // sum / 8;
		if (sum % 8 != 0) {
			row += 1;
		}
		System.out.println("row=" + row);
	}

结果:row=4

现在可以用这样的方法写:

public static void main(String[] args) {
		int sum = 30;
		int row = (30 + 7) >> 3;
		System.out.println("row=" + row);
	}

结果:row=4

这种方式经常在开源代码中见到,单从效率上讲,后者的效率明显更高效 —— + 比 % 的速度快!

 

 

题外话:记得之前面试的时候被问过:你遇到过什么难题?对于程序员而言,其实没什么难题可言,只有知道与不知道的区别。如果把上面这道题放到面试笔试题中,有的人可能就会答出我第一种方式,但这并不代表他能力不行,他只是不知道还有后面这种方式的写法而已。所以,这里我也想替自己以及和自己有相同遭遇的朋友们说句话:不要仅仅因为一道比较偏颇的题就对一个人下结论,行与不行在于他的理解,学习能力,多看看他人的闪光点,给他人一个机会,也是在给自己留机会。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值