伍六七带你学算法——被忽视的数学公式
中学时候学习那么多的数学,却没有人告诉我们这些数学公式我们以后会用到哪里?疑惑了十好几年,直到,你进入it行业,它的舞台来了!
在力扣上有一道中度难度的题,题目是这样的????
(图片质量不是很好!)
题目: 求 1+2+…+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。
高中毕业后把数学一下子抛之脑后的我一下子懵了,作为一个真正意义上的搬砖工,我已经只会for if,不让我循环??怎么做呢?
大概让以前的老师直到我这样可能想给我一拖板~
我靠 这不就是等差数列求和嘛,首尾一加再一除不就好了????
于是我满怀羞涩的写下了下面的答案~
public class _面试题64_ {
/**
* 解题思路:
* 只需要用到我们中学数学中学过的等差数列求和公式
* Sn=n(a1+an)/2 Sn=na1+n(n-1)d/2=dn^2/2+(a1-d/2)n
* 公式中首项为a1,末项为an,项数为n,公差为d,前n项和为Sn。
* 这里 我们的公差 d = 1 ,a1 = 1 , an = n , 套用公式 套用公式 Sn = (n^2+n)/2
*
* @param n
* @return
*/
public static int sumNums(int n) {
return (int) (Math.pow(n, 2) + n) >> 1;
}
public static int sumNums2(int n) {
return (1+n)*n/2;
}
//test
public static void main(String[] args) {
System.out.println(sumNums(8)+"-------"+sumNums2(8));
}
}
尾注:
就在六一儿童节,我结束了我的大学生涯,我毕业了!
学习了那么多年知识,课本让人麻木,到18岁我都不知道学那些数理化史地生有何用?老师也没那闲心告诉你,如今的*里人家也没那义务。
大学四年,我才慢慢的将这些东西慢慢消化掉。我知道在生活中很多东西不能放在一起,他们之间是会有催化作用的;我知道,如果用好数学公式,前人发现、总结的这些规律会让你在很多时候不那么费劲;我知道,为什么我的家乡冬暖夏凉,我也给奶奶讲为什么夏天太阳照不到家里来;我知道,无论什么病症,多半是细菌感染,首要一步是消炎;我知道,在别的语言里也有美妙的诗歌和有趣的历史、灵魂。在大学,我慢慢的解开了这些问题。我不再像以前一样那么怨恨书本和教育*以及所谓的一考定终身。
就像派大星和海绵宝宝一样,我和我最好的朋友渐行渐远,一年可能不发几条消息。但当他有困难,我一定是最快能帮到他的。我相信遇到困难的人是我,他,也是一样的,真正的朋友永远是这样的。
如今的我,有些对未来的恐惧,但我知道,只要我往前走,心里的石头就会更平稳。不再以一个毛头小子的视角面对社会。
亲历,望来日如期!
上一篇: MyCat 之垂直分库实战
下一篇: 什么是Java字符串的不可变性