LeetCode
文章平均质量分 76
huoyao
ZJNU,zz
展开
-
leetcode-Single Number
class Solution {public: int singleNumber(int A[], int n) { map chek; for(int i=0;i!=n;++i) if(!(chek.insert(pair(A[i],1)).second)) chek.erase(A[i]);原创 2013-12-10 16:34:08 · 634 阅读 · 0 评论 -
【leetcode】002 Add Two Numbers
题目中提到是倒序存储,所有上述既为342+465=807。单链表,我们从题意很容易得到解题思路:用两个指针分别同步遍历两个链表将对应的节点值相加后,再加上前一对节点的进位值(初值为0)。用得到的新值模10后建立节点,并计算下一个节点的进位值。注意,若最后进位值不为0则需要增加一个尾节点。原创 2015-01-30 22:10:55 · 651 阅读 · 0 评论 -
【leetcode】001 Two Sum
第一反应是找出所有的配对,复杂度为O(n*n),这肯定不行。然后想到怎么样将时间复杂度减到O(n),每一个数我们肯定需要遍历一次。但对于配对时的找数的过程,我们可以利用hashmap的思想实现在O(1)时间确定是否存在我们需要找的数。 整个算法的过程为:遍历数组,对每一个遍历到的数若其对应的数hashmap中没有,则添加进hashmap;否则,证明我们已经找到两个数,结束程序。当我们遍历到的某一个数,其前面的数肯定已经在hashmap中。原创 2015-01-30 21:53:09 · 669 阅读 · 0 评论 -
【leetcode】003 Longest Substring Without Repeating Characters
首先利用hashmap和指针得到一个尽可能长的无重复字符的初始字符串,记录其长度和末尾指针。然后向后遍历,遇到第一个重复字符,更新长度信息,因为题目要求字串具有连续性,所以,我们若要往下继续寻找字串,肯定要包含遇到的这个重复字符。这时,我们可以利用滑动窗口的思想,假设新的字串包含了这个字符,则我们需要将前面保存好的子串中这个重复字符之前的字符全部去掉,利用这个规则我们可以更新老的字串的左右指针得到新串,继续往下遍历。直到遍历结束,我们将得到最大的字串长度。原创 2015-01-30 22:31:24 · 679 阅读 · 0 评论 -
Manacher算法--O(n)回文子串算法
转自:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824O(n)回文子串算法注:转载的这篇文章,我发现下面那个源代码有点bug。。。在下一篇博客中改正了。。 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpr转载 2014-12-31 09:16:18 · 629 阅读 · 0 评论 -
leetcode难度及面试频率
转载自:LeetCode Question Difficulty Distribution http://blog.csdn.net/yutianzuijin/article/details/11477603 1Two Sum转载 2014-12-30 21:36:39 · 885 阅读 · 0 评论 -
k sum 问题系列
转自:http://tech-wonderland.net/blog/summary-of-ksum-problems.html(中文旧版)前言:做过leetcode的人都知道, 里面有2sum, 3sum(closest), 4sum等问题, 这些也是面试里面经典的问题, 考察是否能够合理利用排序这个性质, 一步一步得到高效的算法. 经过总结, 本人觉得这些问题都可以使用一个转载 2015-01-03 21:59:22 · 898 阅读 · 0 评论