摘要: 题目如下:解题思路:本题的关键在于题目限定了是连续的数组,我们用一个dp数组保存第i位到数组末位的和。例如nums = [1,1,1],那么dp = [3,2,1], dp[i]表示nums[i]+nums[i+1] +...+nums[len(nums)-1],有了这一个dp数组后,我们很容易就可 阅读全文
posted @ 2018-04-14 11:29 seyjs 阅读(220) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题难度不太大,对时间复杂度也没有很高的要求。我的做法是用一个字典来保存每个字符出现的次数,用正数1记录标记secret中出现的字符,用负数1记录guess中出现的字符,这样每出现一次正负抵消,即表示出现了一次cow。 代码如下: 阅读全文
posted @ 2018-04-13 10:41 seyjs 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题我采用的是最简单最直接最粗暴的方法,把排序后的nums数组和原始数组比较即可得到答案。 代码如下: 阅读全文
posted @ 2018-04-09 13:12 seyjs 阅读(188) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:因为n的最大值是1e8,所以暴力计算是不行的。首先,我们可以排除掉素数,因为素数的整数因子只有1和自己本身,所以累加的和肯定是1。对于非素数,我们首先找到它的最小整数因子,例如28,最小整数因子是2,表示[2,14]是其中一对整数因子;接下来对较大的那个整数因子继续做最小整数因 阅读全文
posted @ 2018-04-04 10:32 seyjs 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:这个题目的本质是一个爬楼梯问题,在爬楼梯问题中,每次可以选择走一步或者两步。而本题也是一样的,解码的时候选择解码一个字符或者两个字符,但是加大了一点点难度,要考虑这些情况。1,Z对应的编码是26,所以超过26的连续两个字符不能合并解码,27只能解析成2和7;2,0字符只能和前面 阅读全文
posted @ 2018-04-03 10:06 seyjs 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:对于这种题目,还是用正则表达式吧。顺便吐槽下,这个题目坑实在是太多太多了,各种数字的表达类型都要考虑到,反正就是慢慢尝试呗。如果是像我一样对正则表达式不是特别熟练的话,还是建议把各种情况分开,不要写在一个表达式里,不然要死很多脑细胞的。 代码如下: 阅读全文
posted @ 2018-03-30 18:52 seyjs 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路: 如果用一个四层for循环进行暴力求解肯定是能得到结果的,但是这样的话复杂度就是O(n^4)。有没有办法把复杂度降到O(n^2)呢,答案是有的。题目要求的是四个数相加,那么我们可以利用分治的思想拆分成两个数的和与另外两个数的和相加即可,只要保证这里的两组两个数在数组中对应的下标 阅读全文
posted @ 2018-03-28 09:55 seyjs 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:《编程之美》中有一个章节是不要被阶乘吓倒,里面讲述了“问题一:给定一个整数N,那么N的阶乘末尾有多少个0呢?例如N = 10, N! = 362800,N! 的末尾有两个0.” 这个问题的解法。本题就是在这个问题的基础上把输入和输出倒过来了。首先,对于输入参数K,我们可以知道输 阅读全文
posted @ 2018-03-16 17:50 seyjs 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:本题如果用递归来做,思路会非常清晰。每个杯子得到的总的香槟的数量,减去自身杯子容量后,多余的部分均分成两部分,下层的两个杯子各得一半,但是这种解法在输入香槟较大的情况下会导致超时。更加合适的是用动态规划的方法,因为递推关系式很容易就能找到。对于任意一个杯子dp[i][j]来说, 阅读全文
posted @ 2018-03-14 10:11 seyjs 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 题目如下: 解题思路:题目明确了没有回路,而且nodes的范围是[2,15],这实在是大大降低了难度,一个深度遍历就能搞定,注意由于结果需要输出path,所以需要记录每次遍历的过程。 代码如下: 阅读全文
posted @ 2018-03-13 14:25 seyjs 阅读(169) 评论(0) 推荐(0) 编辑