Adam's blog
Published by Adam
摘要: 题目 思路: 这道题最简单的思路就是暴力算法了,效率为 O(n^2) ,可以模拟得出。 最开始我一直以为这道题是动态规划题,解了好久,但发现不存在最优子结构这个特性,于是换了一种思路 栈。 建立一个存储下标位置(index)的栈s,我们从 顺序取出元素,判断这个元素是不是某位数的下一位更大元素。这个 阅读全文
posted @ 2019-02-10 16:22 AdamWong 阅读(481) 评论(0) 推荐(0) 编辑
摘要: 题目: 条件转化 这种方法主要是通过比较时间间距和每次的中毒状态时间,如果时间间距更大艾希就会经历一个完整的中毒状态时间。如果中毒状态时间更长,那么实际上中毒状态还没结束艾希就又中了一次毒,这样只需要加上间隔时间, 用数学表达式来描述就是: AllTime+=min(Time,duration) 阅读全文
posted @ 2019-02-10 16:18 AdamWong 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 跳跃游戏链接 给定一个非负整数数组,你最初位于数组的第一个位置。 数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个位置。 示例 1: 示例 2: 如果只是判断能否跳到终点,我们只要在遍历数组的过程中,更新每个点能跳到最远的范围就行了, 如果最后这个范围大于等于终点,就是 阅读全文
posted @ 2019-01-04 22:04 AdamWong 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 题目 贪心方法 用一个两个数组vector<int>cnt,vector<bool>in_right_place; string res:目前符合条件的字符串,到代码结束的时候,这个res才是正确的答案 cnt数组 用于记录每个char未来会出现的次数,in_right_place数组判断这个cha 阅读全文
posted @ 2019-01-04 14:31 AdamWong 阅读(2015) 评论(0) 推荐(1) 编辑
摘要: 这一题是贪心不是模拟 是贪心不是模拟 是贪心不是模拟! 如果用模拟的做法会比较慢,也失去了做这一题的趣味了。 模拟的方法很简单,就是每一个加油站都做起点模拟一遍,试一下能不能完成一圈,能完成一圈就保存答案,不能完成的就往下一个找 如果都不能完成则返回-1 贪心的做法非常的巧妙,整个循环数组如下性质。 阅读全文
posted @ 2019-01-03 22:15 AdamWong 阅读(336) 评论(0) 推荐(1) 编辑
摘要: 题目 1.区域和检索: 简单题,前缀和方法 乍一看就觉得应该用前缀和来做,一个数组多次查询。 实现方法: 新建一个private数组prefix_sum[i],用来存储nums前i个数组的和, 需要找区间和的时候直接通过prefix_sum[j]-prefix[i-1]即可得到从[i,j]区间的和, 阅读全文
posted @ 2019-01-03 20:30 AdamWong 阅读(400) 评论(0) 推荐(1) 编辑
摘要: 恢复内容开始 题目的链接 简单的动态规划题,使用了二维dp数组就能很好的表示。 由于有边界的问题,所以这个dp数组为 dp[n+1][n+1]。 dp[i][j]意思是终点为(i-1,j-1)点的路径最小和。 我们需要把这个三角形变成方阵来看,先看看样例: 变成方阵之后就变成了 [ [2, INT_ 阅读全文
posted @ 2019-01-03 15:35 AdamWong 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 链接 给定一个整数数组 nums,按要求返回一个新数组 counts。数组 counts 有该性质: counts[i] 的值是 nums[i] 右侧小于 nums[i] 的元素的数量。 示例: 未使用的STL的lower_bound()的模拟法加查找代码,因为减少了函数调用,效率会高很多 3. 记 阅读全文
posted @ 2019-01-02 14:30 AdamWong 阅读(6804) 评论(0) 推荐(1) 编辑
摘要: 题目链接 这一题目首先需要弄懂题目的意思,下降路径最小和指的是在方阵中可以从上往下行走,走过后获得的值最小,方向可以是走左下,右下,直下。 题目和传统的动态规划一样,把边界的值先初始化,然后通过状态转移一步一步到最后一行 我们有dp[i][j]:意思是终点为(i,j)的下降路径最小值 状态方程为 d 阅读全文
posted @ 2019-01-01 16:24 AdamWong 阅读(496) 评论(0) 推荐(1) 编辑
摘要: 最开始的时候,我想到的动态方程很简单,就是 dp[i]=min(dp[i],dp[i 平方数]+1) 其中 一定要大于0要不然就会越界。这个思路很简单,举个例子: dp[5]=min(dp[5 1^2]+1,dp[5 2^2]+1,dp[5]) 这表示5可以如下组合: dp[5] = min(所有组 阅读全文
posted @ 2018-12-31 16:10 AdamWong 阅读(523) 评论(0) 推荐(1) 编辑