上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 43 下一页
摘要: merge sort,记了长度。如果断开链表时把第一个链表的最后一个节点的next设为NULL,就不用在函数参数里传长度了。一直错误是因为在生成的链表最后的next没有设成NULL。用了dummy node很有用。可以借鉴http://blog.csdn.net/sunbaigui/article/details/16843419最后直接把剩余的链表接过来。class Solution {public: ListNode *sortList(ListNode *head) { int size = 0; ListNode *node = head; ... 阅读全文
posted @ 2014-01-15 23:06 阿牧遥 阅读(228) 评论(0) 推荐(0)
摘要: unordered_map mp;if (mp.find(key) == mp.end())unordered_map::iterator it = mp.find(deltmp->key);mp.erase(it);mp.clear();map[k]++ // this includes the case when count of k from 0 to 1for (unordered_map::iterator it = mp.begin(); it != mp.end(); it++) { int result = num_stack.top();num_stack.pop(); 阅读全文
posted @ 2014-01-09 19:47 阿牧遥 阅读(294) 评论(0) 推荐(0)
摘要: 逆波兰表达式,情况不是很复杂,用一个栈就解决了。 #include <stack> #include <string> using namespace std; class Solution { public: int evalRPN(vector<string> &tokens) { for (i 阅读全文
posted @ 2014-01-09 15:28 阿牧遥 阅读(272) 评论(0) 推荐(0)
摘要: 双链表+map 实现。所有数据存在链表里,map里存key到Node*的映射。注意当删除时除了要从链表尾部删除节点外,还要map.erase(it)。Node里也要有key,因为为了删除时方便找到it。 #include <map> using namespace std; class Node { 阅读全文
posted @ 2014-01-09 13:37 阿牧遥 阅读(189) 评论(0) 推荐(0)
摘要: 一开始介绍项目,最后的反馈是,还是说得不清楚,需要再准备准备。然后两道题,第一题是有个数组,有2*n个数字,从1~n。比如n=3的数组,{1,2,2,3,1,3}。然后两两相同的数字删除,每次删除得到这两个数字的距离作为分数,最后得到分数的和,求能得到最大的分数。比如这里先消除1,然后2,3,这样分数是3+0+0,为0。那么首先判断出brute force的复杂度太高。之后就贪心,虽然暂时无法证明它是对的,但感觉是对的,还是继续做了(贪心是对的,其实每次把有包含关系的先取外层再取里层就行了)。那么n次遍历,每次得到距离最大的数字对,然后mark为-1表示删除了。但是当时觉得得到距离最大的数字对 阅读全文
posted @ 2013-12-28 21:31 阿牧遥 阅读(243) 评论(0) 推荐(0)
摘要: 假设我们有一个全局升序数组,这个数组长度unlimited现在我们有一个全局的指针和一个目标target值,target和指针你不可见。但是有以下几个操作bool istag();void goright();void goleft();我们保证target一定存在。一开始指针指向值为0的位置。问题:1.你能否找到这个target2.请写出你的算法和计算时间复杂度。下面是现场写的代码,基本思路是倍增。(如果不是倍增,比如每次回到原点再加一走,是N^2的。) 注意如果为了分析复杂度方便,可以不直接*2折返,可以先回到原点再*2走。bool search() { int step = 1; ... 阅读全文
posted @ 2013-12-28 20:41 阿牧遥 阅读(170) 评论(0) 推荐(0)
摘要: 思路是O(n^2)的,就是取一个点,和其他所有的点比,如果斜率一样的就在一条线上。这里要注意有重复的点,另外,学会了float也可以做map的key,还有map[k]++也覆盖了一开始count为0的情况。参考:http://blog.csdn.net/doc_sgl/article/details/17103427#include using namespace std;class Solution {public: int maxPoints(vector &points) { int ans = 0; int size = points.size(); ... 阅读全文
posted @ 2013-12-26 23:33 阿牧遥 阅读(269) 评论(0) 推荐(0)
摘要: http://community.topcoder.com/stat?c=problem_statement&pm=12300&rd=15699题意:有一个无限长的阶梯,i从1到N,每次跳i步或不跳;有一个阶梯是坏的,不能跳,问最多跳多远。分析:贪心的跳,当跳到坏阶梯时,就躲开,怎么躲,就是第一步不... 阅读全文
posted @ 2013-12-25 12:05 阿牧遥 阅读(250) 评论(0) 推荐(0)
摘要: 给出一个二叉搜索树的先序遍历,要求重新构造出这个二叉搜索树。一开始给出了一个递归的算法,指出复杂度有更优的解法。然后想出来一个O(n)的算法,就是使用一个栈,然后依次判断新的节点比原来的大还是小,然后放入左子树或右子树。实现过程中,一开始用了class,被指出成员默认是private的,于是马上改用struct。接下来写得一开始还行,但后来发现有bug之后思路有点蒙。经过多次试验,才发现是大于和小于的两个判断调换了,但这时已经很靠后了。另外被指出,可以直接写,new TreeNode(val)这样的,不要先new出来再赋值,这样看起来垃圾代码很多,写起来看起来都不合算。所以觉得接下来可能要二刷 阅读全文
posted @ 2013-12-11 09:15 阿牧遥 阅读(207) 评论(0) 推荐(0)
摘要: http://community.topcoder.com/stat?c=problem_statement&pm=12706&rd=15700这题有意思。首先要观察到,如果选定一些歌曲,最优做法就是,按照tone排序,那么这时浪费的间隔最少,是(max_tone-min_tone)。那么首先对歌曲... 阅读全文
posted @ 2013-12-03 23:26 阿牧遥 阅读(272) 评论(0) 推荐(0)
上一页 1 ··· 13 14 15 16 17 18 19 20 21 ··· 43 下一页