随笔分类 -  [算法/数据结构] 动态规划、贪心

摘要:<> 题目描述 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 输入: [2,3,1,1,4] 输出: true 解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 阅读全文
posted @ 2020-04-17 13:59 remly 阅读(112) 评论(0) 推荐(0)
摘要:题目 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。 示例 1 阅读全文
posted @ 2019-03-28 14:37 remly 阅读(145) 评论(0) 推荐(0)
摘要:/** 1.dp[i]表示到达第i步楼梯的最小花费,即最优解 2.要到达第i步楼梯,必然是通过爬一个阶梯或者爬两个阶梯实现的 爬一个阶梯的情况:dp[i-2] 爬两个阶梯的情况:dp[i-1] 3.选择是爬一个阶梯,还是爬两个阶梯的花费最少。即 min(dp[i-2],dp[i-1]) 4.经过第三步后已经是最优的状态,最后爬上当前楼梯,即 min(dp[i-2],dp[i-1... 阅读全文
posted @ 2019-03-28 10:26 remly 阅读(142) 评论(0) 推荐(0)
摘要:递归解法 爬楼梯的行为,必然是从 1 层爬起,而且也只有两种方法 2阶/1阶 1 层 = 1(一种方法) 2 层 = 2(两种方法)从第3层开始 3 层 = (二层方法数目) + (一层方法数目) 4 层 = (三层方法数目) + (二层方法数目) ... $n = $n-1 + $n-2 阅读全文
posted @ 2019-03-19 16:31 remly 阅读(136) 评论(0) 推荐(0)
摘要:题意 1.题目很明确,求i,j两点范围内的元素总和。 2.先初始化NumArray类,然后一直调用sumRange()函数。 分析 1.如果再sumRange()函数内用循环写累加,由于会多次调用sumRange()函数,导致超时。 2.用动态规划的思想,在类初始化时用一个新的数组arr来存储累加的 阅读全文
posted @ 2019-03-19 14:50 remly 阅读(113) 评论(0) 推荐(0)
摘要:<抽象能力> 题目 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股 阅读全文
posted @ 2019-02-20 16:37 remly 阅读(239) 评论(0) 推荐(0)