- 博客(13)
- 收藏
- 关注
原创 [leetcode题后感]Pascal‘s Triangle I II
典型的数学题题目难点在于发现数学规律仔细观察可以总结出来数学规律 设要求第I行第j列元素 那么这个元素应该等于第i-1行的第j列和j-1列的元素的和基于以上条件即可循环、递归完成题目I题目二让你直接返回第i行的所以元素通常将直接按照I的思路胜场全部的三角形返回最后一行即可但是题目要求O(n)空间那么就要考虑对题目一进行优化首先想到的是数学公式法寻找一个C(i,j
2015-05-21 10:25:33
349
原创 [leetcode题后感]Jump Game
本题采用贪心算法贪心算法的关键在于选取一个正确的贪心策略 显然 每一都选择蹦到最远的位置是一个错误的贪心策略 比如 4 2 2 0 1 如果选择最远的则上来蹦到0的位置结果返回false 显然是错误的那么选择一个什么样的贪心策略才是合适的这里想到了dijk算法的特点 没新增加一个节点都会重新计算一次最短路径在本题中那就是每新来一个元素重新计算一下新增加这个元素之后当前集合所能跳
2015-05-20 19:53:12
234
原创 [leetcode题后感]happy number
这个题目很简单难点有两个第一个是计算happy值第二个是判断所有产生的happy是否成一个环第一个很简单 依次计算各位十位百位。。。的平方值然后相加即可第二个用hashmap 讲每次产生的happy值存入hashmap 若以存在 则返回false
2015-05-14 11:17:16
273
原创 [leetcode题后感]Minimum Size Subarray Sum
类似于2sum 用两个指针指向一个subarray当前subarray的和大于等于目标值时 记录一下当前子序列的长度 若他是最小值则更新最小值 然后讲第一个指针++ 当子序列的和小于目标值的时候 第二个指针++依次循环以上过程 直到第二指针走到队尾 或者 当第一个指针大于第二个指针的时候(即数组中出现了一个数字大于目标值) 此时直接返回1即可要注意集中特殊测试用例一种是第一个数
2015-05-14 10:41:06
293
原创 [leetcode题后感]sort color
这个题很简单 典型的计数排序即已知待排序的数的值域是已知的 那么可以用一个数组存储每个数字出现的次数 然后在按照出现的次数重新输出本题的过程中遇到了一个问题 那就是数组的初始化要注意new方法申请数组的时候 只有当加()之后new才会自动赋初值0 否则不会负初值 即int *a=new int[3]();本题还有第二个做法,因为题目的标签显示了two pointer 因此考
2015-05-08 21:40:26
333
原创 [leetcode题后感]unique path I、 II
题目很好理解 类似青蛙跳台阶问题很容易找出来递推公式f(m,n) = f(m-1,n) + f(m,n-1)对应题目二的话 递推公式稍作更改 当点 m-1,n 等于1(即阻塞的时候)f(m,n) = f(m,n-1) 即可 只需要根据给的二维数组就行一下判断就可以作为递推公式的条件但是如果单纯的用递归 由于向两个方向分别递归,递归层数会非常多因此考虑把重复的路径存起来,当重复计算
2015-05-08 14:37:08
348
原创 [leetcode题后感] Remove Duplicates from Sorted Array I、 II
这个题感觉很简单I的算法就是遇到重复的不计数 O(n)时间遍历返回计数就可以II的算法跟I相似 加一个标志变量 当这个数字出现次数小于2的时候计数 并将标志变量加1 II中需要注意 不仅仅要你返回结果的个数 还要将传引用调用的nums也返回为正确结果 即去掉重复超过两次的元素那么很简单 在判断出现次数是否小于2的时候顺手删掉超过2的元素即可但是要注意 vector的删除 用fo
2015-05-05 22:30:05
307
原创 [leetcode题后感]search insert position
很简单的二分查找找到就返回下标即可当找不到时候需要最一番处理要看当left>right时最后一次是对left进行了+操作还是对right进行了-操作解决这个问题很简单,加个标志变量即可最后进行判断 若是对left进行了操作返回left即可若是对right进行了操作则需要返回right+1 这点需要注意
2015-04-23 21:53:36
366
原创 [leetcode题后感]search for a range
题目要求 算法复杂度lgn 还是数组的题 不用看就知道是二分查找的题目二分查找一个数是否存在很熟练 但是对于寻找位置一开始还是思考了一番这里想到了一个比较简单的方法 因为当你确定存在这个数时要分别对mid的前面的和后面的数组元素再分别二分,所以我分开两部分进行二分若寻找最左侧的坐标,当mid=target时候就再去找mid左侧是否还存在target 若不存在,则此mid为最左侧左边
2015-04-23 21:49:29
233
原创 [leetcode题后感]first missing positive
这个题有点坑 题目就没读懂啥意思 百度了各路大神之后才知道 是求第一个没出现过的正整数题目很简单 但是限制条件很苛刻 要求O(n)时间和O(1)的空间 所以难度增加思路大概如下既然是n个数字的数组,那么也就是求1-n中数字第一个没再数组中出现的就是所求的既然不让用多余的空间,那么久考虑在原数组上做文章,而数组下标的特性,正好是0-n-1的n个数字所以很自然想到 讲0 - n-1
2015-04-20 21:01:27
356
原创 [leetcode题后感]combination sum i,ii
两道题思路基本一样 区别在意一个可以重复使用数字 一个不可以重复使用解题都用到了回溯既然用回溯就要去判断何时回溯 还要判断整个递归的终止条件题i的想法因为可以重复使用 我从最大元素开始寻找一个组合 类似于贪心的想法 每一次先选最大的元素加入结果集合 然后递归再加入最大的元素 当当前结果集合超过了target值时回溯选择次大的元素。 每一次选择了最大的元素得到返回之后再讲最大的元素弹
2015-04-20 11:27:43
353
原创 [leetcode题后感]Divide Two Integers
最开始时候开到这个题 不让用除法乘法和模运算 想到的就只剩下了位运算位运算也就是左移乘2 右移除2 乘二除二 顺理成章的想到了二分查找两个int的除法返回int 要摒弃传统除法的计算想法 a*b=c 转换为加法也就是b个a相加等于c 而整数除法中 b=c/a 则应该是b个a相加小于c 但是b+1个a相加大于c由这个思路去找符合条件的b首先想到的就是依次+1枚举 但是这样的做法就
2015-04-19 21:17:16
310
原创 [leetcode题后感]container with most water
此题tag 为 two pointer 而two pointer的经典应用是2sum ksum类似的题目本题一开始并没有很好的思路 因为首先题目标书也不是很明确,应该注意两条垂直的直线之间的water量不用考虑其他直线的情况,即 water的量就等于两条直线与x轴所构成的容器的容量本题比较难想,不知道如何转换为常用的算法 经搜索发现了最大container的两条性质即最大con
2015-04-19 16:46:09
263
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人