摘要: 将链表分成三段,中间一段reverse后再链接。 链表中节点位置从1开始计数。 注意m可能为1,所以要加上if(last == start) head = end; 不然会丢失数据,因为reverse后head是reverse一段的最后一节点,只返回head的话head之前的节点全部丢失。 4ms 阅读全文
posted @ 2016-04-03 21:42 co0oder 阅读(183) 评论(0) 推荐(0) 编辑
摘要: ver0: 最简单的思路,得到中间节点,把这之后的节点放入stack中,再从head开始,把stack.top()插入。 具体解释:得到slow后,分两种情况考虑,链表长度为偶,slow为前半段的最后一个节点;链表长度为奇,slow为正中间节点的前一个节点。两种情况下reoder后slow->nex 阅读全文
posted @ 2016-04-03 20:49 co0oder 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 1 ListNode* reverseList(ListNode* head){ 2 if (head==NULL || head->next==NULL) return head; 3 ListNode *pre=head, *cur=pre->next, *post; 4 pre->next = NULL; 5 while (cur!=NULL){ ... 阅读全文
posted @ 2016-04-03 20:35 co0oder 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 输出数字a,保留两位小数 阅读全文
posted @ 2016-04-03 20:24 co0oder 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 得到带空格的string输入 阅读全文
posted @ 2016-04-03 20:23 co0oder 阅读(136) 评论(0) 推荐(0) 编辑
摘要: getMid函数中,fast一次走2步,slow一次走1步,因此假设全长len,len偶时,slow到达前半段的最后一个节点,len奇时,slow到达正中间的节点,两种情况中,slow->next均为后半段的起始节点。 阅读全文
posted @ 2016-04-03 20:22 co0oder 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 本来只是简单地比较两棵子树的高度,但是看到题目中的every node就想偏了。 实际上就是计算左右子树的高度差是否大于1. 思路:求树的height,某个节点的height = max(左子树height,右子树height) + 1. 还有其他算法,留坑。 阅读全文
posted @ 2016-03-22 19:20 co0oder 阅读(131) 评论(0) 推荐(0) 编辑
摘要: unordered_map< string, vector<string> >map;存sort之后的每个string及其一串anagram。只是函数的简单调用。注释部分是另一种语法,思路是一样的。 阅读全文
posted @ 2016-03-20 21:13 co0oder 阅读(209) 评论(0) 推荐(0) 编辑
摘要: secret和guess按位读入,如果相等bull就加1,不相等就在各自统计不同数字出现次数的数组里加1(s_map[i]指secret里数字i出现的次数)。最后s_map和g_map存的是各自string中位置不等的各数值出现的次数,cow等于两个数组中相同位置的最小数。 阅读全文
posted @ 2016-03-20 20:34 co0oder 阅读(163) 评论(0) 推荐(0) 编辑
摘要: 维护一个set,保存i之前且与i相差不超过k的一系列数,所以当i>k时,会删去set中nums[i - k - 1]的值,因此k要进行处理,如果k>nums.size(),k赋值为nums.size() - 1。 维护map,对应关系是数值及其位置,存放数值的最新位置(即最大位置),如果读入的数已存 阅读全文
posted @ 2016-03-20 19:47 co0oder 阅读(136) 评论(0) 推荐(0) 编辑