什么是杨辉三角,杨辉三角的性质,求解《118. 杨辉三角》《119. 杨辉三角 II》和《2221. 数组的三角和》
n
行有 n
个数(n
从 1
开始)n
行数字和为 2<sup>n-1</sup>
(n
从 1
开始)1
,取余为左上方 + 右上方给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
var generate = function(numRows) {
const r = Array.from({length: numRows}, (_, i) => new Uint32Array(i + 1))
for (let i = 0; i < numRows; i++) {
r[i][0] = r[i][i] = 1
for (let j = 1; j <= i >> 1; j++) {
r[i][j] = r[i][i - j] = r[i- 1][j - 1] + r[i - 1][j]
}
}
return r
};
给定一个非负索引 rowIndex,返回「杨辉三角」的第 rowIndex 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。
var getRow = function(rowIndex) {
const r = Array.from({length: rowIndex + 1}, (_, i) => new Uint32Array(i + 1))
for (let i = 0; i <= rowIndex; i++) {
r[i][0] = r[i][i] = 1
for (let j = 1; j <= i >> 1; j++) {
r[i][j] = r[i][i - j] = r[i - 1][j - 1] + r[i - 1][j]
}
}
return r[rowIndex]
};
var getRow = function(rowIndex) {
const cur = new Uint32Array(rowIndex + 1)
let prev = []
for (let i = 0; i <= rowIndex; i++) {
cur[0] = cur[i] = 1
for (let j = 1; j <= i >> 1; j++) {
cur[j] = cur[i - j] = prev[j - 1] + prev[j]
}
prev = cur.slice()
}
return cur
};
var getRow = function(rowIndex) {
let prev = []
for (let i = 0; i <= rowIndex; i++) {
const cur = new Uint32Array(rowIndex + 1)
cur[0] = cur[i] = 1
for (let j = 1; j <= i >> 1; j++) {
cur[j] = cur[i - j] = prev[j - 1] + prev[j]
}
prev = cur
}
return prev
};
var getRow = function(rowIndex) {
const r = new Uint32Array(rowIndex + 1)
r[0] = 1
for (let i = 0; i <= rowIndex; i++) {
for (let j = i; j > 0; j--) {
r[j] += r[j - 1]
}
}
return r
};
给你一个下标从 0 开始的整数数组 nums ,其中 nums[i] 是 0 到 9 之间(两者都包含)的一个数字。 nums 的 三角和 是执行以下操作以后最后剩下元素的值: nums 初始包含 n 个元素。如果 n == 1 ,终止 操作。否则,创建 一个新的下标从 0 开始的长度为 n - 1 的整数数组 newNums 。 对于满足 0 <= i < n - 1 的下标 i ,newNums[i] 赋值 为 (nums[i] + nums[i+1]) % 10 ,% 表示取余运算。 将 newNums 替换 数组 nums 。 从步骤 1 开始 重复 整个过程。 请你返回 nums 的三角和。
var triangularSum = function(nums) {
let n = nums.length
while (--n) {
for (let i = 0; i < n; i++) {
nums[i] = (nums[i] + nums[i + 1]) % 10
}
}
return nums[0]
};