天天看点

c语言杨辉三角_LeetCode118 杨辉三角

来自读者的催更

来自一位正在参加校招的小伙伴的点题。

c语言杨辉三角_LeetCode118 杨辉三角

那我还能说什么,安排。

不管你是什么三角,在小福同学的眼里,你都是我的主角

c语言杨辉三角_LeetCode118 杨辉三角

老规矩

先来看下题目

c语言杨辉三角_LeetCode118 杨辉三角

杨辉三角

从图中可以看出来,其实是想考察我们对数组的理解程度,那我们就画出一个二位数组来:

c语言杨辉三角_LeetCode118 杨辉三角

我们把这个二维数组定义为

result

,每一行用

row

来表示 这样我们就可以比较方便的得出两个重要的结论

  1. result[i][0] = 1,result[i][i] = 1. 也就是数字的第0列和对角线的数字都是1
  2. row[j] = result[i-1][j-1] + result[i-1][j];也就是说除了结论1里面的其他位置的数字,都是它上面和上面的左边的和

如果没看明白的话,就看下这个动图

c语言杨辉三角_LeetCode118 杨辉三角

撸代码

有了上面的两个结论,也就有了思路了,代码可以干起来了「java代码」。

代码里面都写了注释了,应该比较好懂吧,为了更容易懂,上面代码特地用了

c语言

的二维数组样式,并没有有java里面的

List

,希望可以帮到需要的人。

题外话

其实这还真有点像做高中的数学题,给你一堆条件,大部分都是隐含条件,如果把隐含条件都拿到了,这一题已经做对一半了。

另外哈,这题可以用动态规划来做,但是今天肯定写不完了,后面动态规划会单独拎出来讲,毕竟我现在对动态规划也不太熟练。

现在已经晚上11点26分了,

小爱同学

已经提醒我去睡觉了,大家晚安。