NC73 数组中出现次数超过一半的数字
- 设置一个res作为基位,开始为数组第一个元素,cnt计数,开始为1
- 遍历数组,若当前元素与res相等,cnt + 1,若不相等,cnt - 1
- 当cnt为0时,更新res,重置cnt
function MoreThanHalfNum_Solution(numbers)
{
if(!numbers || numbers.length == 0) return;
let res = numbers[0];
let cnt = 1;
let a = 1;
let b = 0;
for(let i = 1 ; i < numbers.length ; i++){
if(cnt == 0){
res = numbers[i];
cnt = 1;
continue;
}else{
if(numbers[i] != res){
cnt--;
}else{
cnt++;
}
}
}
return res;
}
module.exports = {
MoreThanHalfNum_Solution : MoreThanHalfNum_Solution
};
NC59 矩阵的最小路径和
- 第一列第一行的最短路径只能基于上一列,上一行
- 当前的最短路径为左格或上格的较短加上本身
- 返回dp数组最后元素即可
function minPathSum( matrix ) {
let dp = [];
for(let i = 0 ; i < matrix.length ; i ++){
dp.push(new Array(matrix[0].length));
for(let j = 0 ; j < matrix[0].length ; j++){
if(i == 0 && j == 0){
dp[0][0] = matrix[0][0];
}else if(i == 0 && j != 0){
dp[0][j] = dp[0][j - 1] + matrix[i][j]
}else if( j == 0 && i != 0){
dp[i][0] = dp[i - 1][0] + matrix[i][j]
}else{
dp[i][j] = Math.min(dp[i - 1][j] , dp[i][j - 1]) + matrix[i][j];
}
}
}
return dp[matrix.length - 1][matrix[0].length - 1]
}
module.exports = {
minPathSum : minPathSum
};