摘要: 原题地址1. 把所有元素都塞到集合里2. 遍历所有元素,对于每个元素,如果集合里没有,就算了,如果有的话,就向左向右拓展,找到最长的连续范围,同时在每次找的时候都把找到的删掉。这样做保证了同样的连续序列只会被遍历一次,从而保证时间复杂度。时间复杂度O(n)代码: 1 int longestConse... 阅读全文
posted @ 2015-01-20 16:16 李舜阳 阅读(181) 评论(0) 推荐(0)
摘要: 原题地址动态规划题。最直观的想法就是用cut[i][j]表示子串s[i..j]的最小分割数,则有如下规则:1. 如果s[i..j]是回文串,则cut[i][j]=02. 如果s[i..j]不是回文串,则枚举分割点,将原字符串切成两个子串,求解子问题。递推公式:cut[i][j] = min{cut[... 阅读全文
posted @ 2015-01-20 15:55 李舜阳 阅读(318) 评论(0) 推荐(0)
摘要: 原题地址遍历所有小孩的分数1. 若小孩的分数递增,分给小孩的糖果依次+12. 若小孩的分数递减,分给小孩的糖果依次-13. 若小孩的分数相等,分给小孩的糖果设为1当递减序列结束时,如果少分了糖果,就补上,如果多分了糖果,就减掉究竟补多少或减多少,这很容易计算,不啰嗦了。时间复杂度:O(n)代码: 1... 阅读全文
posted @ 2015-01-20 14:45 李舜阳 阅读(203) 评论(0) 推荐(0)
摘要: 原题地址非常巧妙的方法,不需要用map,只需要O(1)的额外存储空间,分为3步:1. 先复制链表,但是这个复制比较特殊,每个新复制的节点添加在原节点的后面,相当于"加塞"2. 根据原节点的 ramdon 指针构造新节点的 random 指针3. 恢复原链表结构,同时得到新复制链表时间复杂度:O(n)... 阅读全文
posted @ 2015-01-20 14:17 李舜阳 阅读(152) 评论(0) 推荐(0)
摘要: 原题地址动态规划题令s[i..j]表示下标从i到j的子串,它的所有分割情况用words[i]表示假设s[0..i]的所有分割情况words[i]已知。则s[0..i+1]的分割情况words[i+1] = words[k] + s[k+1..i+1],其中(有三个条件要满足)(1) 0 wordB... 阅读全文
posted @ 2015-01-20 13:54 李舜阳 阅读(950) 评论(0) 推荐(0)
摘要: 原题地址这道题坑了我很久,有一组测试数据在本地跑结果是true,但是在Leetcode服务器上跑结果就是false,让我百思不得其解。后来费了好久才终于找到原因,原来还是自己的代码不够严谨,为了让代码简洁一些,有一个判断语句默认空闲内存都是0,结果就错了。这道题没有什么技巧,匹配的思路很直观,如果当... 阅读全文
posted @ 2015-01-20 11:28 李舜阳 阅读(210) 评论(0) 推荐(0)