这道题稍微有点意思,知道答案发现,呀,这么简单就能做啊。我一开始想的是,相遇之后用另一个指针怎么走,然后满足什么关系之后能推出来,其实不用这么麻烦。是很简单的数学关系,我画个图说一下。
S1代表的是链表进入环之前的长度,a代表当两个指针相遇时,走一步的指针在环里走的长度,S2代表的是环的周长,那么根据条件,相遇时,走两步的指针走的距离是走一步的两倍,我们得到公式:
(S1+a)*2 =...
分类:
其他好文 时间:
2014-05-10 10:29:57
阅读次数:
364
有段时间没更新了,专心刷了几天,差十几道结束,决定把第一季更完,然后按照我的理解分类再分析一遍,第二遍的时候应该会按照问题分类,应该会引用第一季的,如果想到或找到更好的解法,会更新第一季。
链表的问题就是恶心,思路大多直接,对指针的操作要非常小心。我自己常犯的错误主要有:
1. 在取val或者取next时,没有判空,造成Runtime Error。
2. 空指针和只有一个节点之类的边界情况。...
分类:
其他好文 时间:
2014-05-10 09:09:54
阅读次数:
304
给你一个数组,O(N)时间找出某些个数,这些题如果没见过,还真不是很好想。做了这些题,我觉得有下面两个个比较常见的思路:
1. 用两个指针,可以从一边开始,走某个距离停止,也可能是一头一尾两个指针,定义一种大小关系,他俩比较之后移动,直到相遇。
2. 用其他的辅助的数据结构,可能是hash表,可能是map,可能是栈或者队列。这种通常用在访问了现在的不能确定他们是不是有用,是不是能影响最后的结果...
分类:
其他好文 时间:
2014-05-07 07:50:33
阅读次数:
392
LRU Cache
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set.
get(key) - Get the value
(will always be posi...
分类:
其他好文 时间:
2014-05-07 07:16:21
阅读次数:
316
找出一个数组中的三个数,三个数不能组成三角形。
三个数不能组成三角形的条件是:a + b
两边和小于第三边。
这个问题属于三个数的组合问题了。暴力法可解,但是时间效率就是O(n*n*n)了,很慢。
不过既然是组合问题就必定可以使用排序后处理的方法降低时间效率的。
这里降低时间效率的方法是:
选一个最大的数c,然后选两个小数a和b,其中a
这样可以把时间效率降到O(n*n)...
分类:
其他好文 时间:
2014-05-07 06:32:23
阅读次数:
289
这道题思路不难,本质就是BFS嘛,从一个单词开始,他的下一层是所有可以一步变到,且从来没变到过得那些string。问题是怎样确定这些可以变到的string呢?有两个条件,一,只能通过上一层的string变化一个数字得到,二,变化之后单词必须在字典中。注意是变化一个字母得到,而不是编辑距离是1,要么就复杂了,情况多了好多好多。
我最开始的思路是建个map,保存所有从开始单词能变化到得单词及这些单词...
分类:
其他好文 时间:
2014-05-07 06:18:46
阅读次数:
276
这道题看似简单,其实很坑爹啊,动不动就是Time Limit Exceeded,
比如我下面这段TLE的代码,我感觉方法是对的,但是too
naive,算法复杂度到了O(N^2),自然就TLE了而且有一些小语法错误需要注意:for(runner=current+1;;)不能用>;一定所有的case都...
分类:
其他好文 时间:
2014-05-06 11:31:09
阅读次数:
405
一次通过,它的spoiler里面的提示有两个:1. 末尾为0的情况,这个考虑到了2.Did you
notice that the reversed integer might overflow? Assume the input is a 32-bit
integer, then the reve...
分类:
其他好文 时间:
2014-05-06 11:10:45
阅读次数:
356
尝试用两头分别比较的方法,结果发现无法解决1000021这种问题 1 public class
Solution { 2 public boolean isPalindrome(int x) { 3 if(x= 10) { 6 div *= 10;
7...
分类:
其他好文 时间:
2014-05-06 10:39:40
阅读次数:
241