一个月速刷leetcodeHOT100 day08 两道DP题 一道子串

和为k的子数组

中等
提示
给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。
子数组是数组中元素的连续非空序列。
示例 1:
**输入:**nums = [1,1,1], k = 2
**输出:**2
示例 2:
**输入:**nums = [1,2,3], k = 3
**输出:**2
思路: 前缀和 加哈希表

function subarraySum(nums, k) {
let count = 0, sum = 0;
// 哈希表,键为前缀和,值为出现次数
const map = new Map([[0, 1]]);
for (const num of nums) {
sum += num;
// 查询前缀和为 sum - k 的出现次数
if (map.has(sum - k)) {
count += map.get(sum - k);
}
// 将前缀和加入哈希表
map.set(sum, (map.get(sum) || 0) + 1);
}
return count;
}

爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。
每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

function climbStairs(n) {

if (n <= 2) {

return n;

}

let dp = new Array(n + 1).fill(0);

dp[1] = 1;

dp[2] = 2;

  

for (let i = 3; i <= n; i++) {

dp[i] = dp[i - 1] + dp[i - 2];

}

return dp[n];

}

杨辉三角

给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。

示例 1:

输入: numRows = 5

输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]

示例 2:

输入: numRows = 1

输出: [[1]]

var generate = function(numRows) {

if(numRows === 1){

return [[1]]

}

if(numRows === 2){

return [[1],[1,1]]

}

let triangle = [];

for (let i = 0; i < numRows; i++) {

triangle[i] = new Array(i + 1);

triangle[i][0] = 1; // 每行的第一列为1

triangle[i][i] = 1; // 每行的最后一列为1

for (let j = 1; j < i; j++) {

triangle[i][j] = triangle[i - 1][j - 1] + triangle[i - 1][j];

}

}

return triangle;

};

相关推荐

  1. 一个leetcodeHOT100 day08 DP 道子

    2024-05-25 18:28:52       35 阅读
  2. 一个leetcodeHOT100 day02

    2024-05-25 18:28:52       37 阅读
  3. 一个leetcodeHOT100 day 01

    2024-05-25 18:28:52       94 阅读
  4. 一个leetcodeHOT100 day03

    2024-05-25 18:28:52       33 阅读
  5. 算法day39:树形DP

    2024-05-25 18:28:52       25 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 18:28:52       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 18:28:52       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 18:28:52       82 阅读
  4. Python语言-面向对象

    2024-05-25 18:28:52       91 阅读

热门阅读

  1. uniapp Vue2钉钉h5开发pdf无法预览的问题

    2024-05-25 18:28:52       29 阅读
  2. leetcode725-Split Linked List in Parts

    2024-05-25 18:28:52       32 阅读
  3. 加载页面 跳转 新页面 vue

    2024-05-25 18:28:52       41 阅读
  4. 前端框架选择指南:React vs Vue vs Angular

    2024-05-25 18:28:52       33 阅读
  5. 设计模式--策略模式

    2024-05-25 18:28:52       32 阅读
  6. React hooks - useRef

    2024-05-25 18:28:52       34 阅读
  7. MybatisPlus优雅实现加密?

    2024-05-25 18:28:52       33 阅读
  8. arm-day6控制灯

    2024-05-25 18:28:52       34 阅读