文章目录

  • 70. 爬楼梯
  • 198. 打家劫舍
  • 303. 区域和检索 - 数组不可变

动态规划属于热门问题,在leetcode中主要以medium和hard为主。

70. 爬楼梯

假设你正在爬楼梯。需要 n 阶你才能到达楼顶。

每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?

注意:给定 n 是一个正整数。

class Solution:def climbStairs(self, n: int) -> int:if n==1:return 1if n==2:return 2ans = [0]*nans[0] = 1ans[1] = 2for i in range(2, n):ans[i] = ans[i-1]+ans[i-2]return ans[n-1]

很简单的动态规划,爬上第i个台阶的方法就是爬上第i-1阶再爬一阶和爬上n-2阶再爬两阶的和。如果考虑i-3, 那么无论爬1阶还是两阶都属于i-1或i-2的子问题。 32ms, 13.6MB

198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。

class Solution:def rob(self, nums: List[int]) -> int:if len(nums) == 0:return 0if len(nums) == 1:return nums[0]if len(nums) == 2:return max(nums[1], nums[0])ans = [0]*len(nums)ans[0] = nums[0]ans[1] = max(nums[0], nums[1])for i in range(2, len(nums)):ans[i] = max(ans[i-2]+nums[i], ans[i-1])return ans[-1]

很显然,第i个房间能够获取的最多钱就是前i-1个房间获取的钱和前i-2个房间获取的钱加上第i个房间的钱的较大值,第i-3个房间也是包含在i-1和i-2两个子问题中。40ms,13.8MB

303. 区域和检索 - 数组不可变

给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。

class NumArray:def __init__(self, nums: List[int]):if(not nums):return n=len(nums)self.dp=[0]*(n+1)self.dp[1]=nums[0]for i in range(2,n+1):self.dp[i]=nums[i-1]+self.dp[i-1]def sumRange(self, i: int, j: int) -> int:return self.dp[j+1]-self.dp[i]

感觉就是个数学题,直接前j个数的和减去前i-1个数的和就是答案。88ms, 17.4MB

从零开始刷Leetcode——动态规划(70.198.303)相关推荐

  1. 从零开始刷Leetcode——数组(1.26)

    文章目录 1.两数之和 26.删除排序数组中的重复项 马上要去读研了,作为一个转码的ee学生,刷题还是很必要的.从零开始,希望能坚持下去!打算按照类别和难度慢慢刷,一天两三道题左右,争取明年夏季找实习 ...

  2. 从零开始刷Leetcode——数组(746.747)

    文章目录 747. 至少是其他数字两倍的最大数 746. 使用最小花费爬楼梯 747. 至少是其他数字两倍的最大数 在一个给定的数组nums中,总是存在一个最大元素 . 查找数组中的最大元素是否至少是 ...

  3. 从零开始刷Leetcode——数组(11.15.16.18)

    文章目录 11. 盛最多水的容器 15. 三数之和 16. 最接近的三数之和 18. 四数之和 前800题easy难度想做的已经做完了,之后是medium难度 11. 盛最多水的容器 给你 n 个非负 ...

  4. 从零开始刷Leetcode——数组(448.485.509)

    文章目录 448. 找到所有数组中消失的数字 485.最大连续1的个数 509. 斐波那契数 448. 找到所有数组中消失的数字 给定一个范围在 1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 ...

  5. 从零开始刷Leetcode——数组(122.167.169)

    文章目录 122.买卖股票的最佳时机 II 167.两数之和II 169.多数元素 122.买卖股票的最佳时机 II 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计 ...

  6. 从零开始刷Leetcode——数组(118.119.121)

    文章目录 119.杨辉三角2 118.杨辉三角 121.买卖股票的最佳时机 119.杨辉三角2 给定一个非负索引 k,其中 k ≤ 33,返回杨辉三角的第 k 行. 在杨辉三角中,每个数是它左上方和右 ...

  7. 从零开始刷Leetcode——数组(27.35.53)

    文章目录 27.移除元素 35.搜索插入位置 53.最大子序和 今天是27.35.53题.27和昨天的26题思想差不多,35比较简单,53确实想了一段时间. 27.移除元素 给你一个数组 nums 和 ...

  8. 从零开始刷Leetcode——字符串(13.14.20.28)

    文章目录 13. 罗马数字转整数 14. 最长公共前缀 20. 有效的括号 28. 实现 strStr() 13. 罗马数字转整数 给定一个罗马数字,将其转换成整数.输入确保在 1 到 3999 的范 ...

  9. 从零开始刷Leetcode——数组(941.977)

    文章目录 941. 有效的山脉数组 977. 有序数组的平方 三级目录 941. 有效的山脉数组 给定一个整数数组 A,如果它是有效的山脉数组就返回 true,否则返回 false. 让我们回顾一下, ...

最新文章

  1. 组播基本概念、IGMP、IGMP监听学习笔记
  2. python中文版-Python中文版
  3. python语言及其应用下载_Python语言及其应用 中文pdf完整版[13MB]
  4. python做社会网络分析_社交网络分析(Social Network Analysis in Python)①
  5. 字符串之数组中两个字符串的最小距离
  6. HttpClient和DefaultHttpClient
  7. JAVA并发篇_公平锁与非公平锁
  8. 数据库-windows上安装mysql
  9. java特殊字符转义html_java转义html特殊字符
  10. php 检测 变量是否设置,php如何判断变量是否有设置的函数
  11. AlarmManager.setRepeating将不再准确
  12. spring batch(批处理)
  13. 【数据库系统工程师】数据库系统工程师考情分析
  14. 基于java+ssh+mysql实现的共享自行车单车租赁|出租管理系统项目源代码
  15. PCA人脸识别详解——初学者必看
  16. 彼得德鲁克《卓有成效的管理者》——阅读摘要
  17. Project(9)——收货地址 -查看列表
  18. PBS+maui安装文档
  19. csgo社区服务器维护2021,CSGO国际服启动软件
  20. 购物车的实现——淘淘商城(二十六)

热门文章

  1. 搭建无人值守安装服务器
  2. 【extjs6学习笔记】1.9 初始: Mixins
  3. Java读写二进制文件示例
  4. 成功安装Visual Studio 2008.
  5. 华为机试HJ88:扑克牌大小
  6. 请检查captcha表格_【分享】工程资料这样写,再也不用担心检查组来检查资料了...
  7. 测试人员必看——掌握7大技能,做好自动化测试就不是问题!
  8. linux下矩阵键盘设备名,Linux下矩阵键盘驱动分析与移植
  9. 测试工作中常用在线小工具-初级篇
  10. 掘金后端 mysql优化_vue服务端渲染项目(ssr)仿掘金、后台页面是react spa、服务层nodejs、koa、mysql编写的一套多权限内容管理系统...