Leetcode
文章平均质量分 61
跨世纪逃兵
这个作者很懒,什么都没留下…
展开
-
Leetcode 114. Flatten Binary Tree to Linked List
题意:给一棵树,按前序遍历的顺序将依次放在右子树上 思路: 1,第一眼看上去的思路是,前序遍历tree,节点依次加入队列,遍历完之后,出队,并连接成题目要求 时间复杂度O(N) 空间复杂度O(N) 2.想了想,一定有空间复杂度O(logN)的 对于一棵树,我要把它变成题中的链表状。需要1把左子树变成如题的链表状;2.把右子树变成链表状;3.根->链状左子树,链状左子树的最后一个原创 2016-08-27 16:41:56 · 656 阅读 · 0 评论 -
Leetcode 94. Binary Tree Inorder Traversal
题意:中序遍历二叉树,要求非递归 思路:设置一个栈,给每个节点设置一个标号,代表是否展开过。若未展开过,前序遍历就按right left root ,中序遍历就按 right root left,后序遍历就按root right left压入栈。发现展开过,就直接放入vector中。循环,至栈为空,得到的vector就是遍历后的结果 /** * Definiti原创 2016-08-28 19:05:49 · 356 阅读 · 0 评论 -
Leetcode 7. Reverse Integer
先判断反转后是否溢出, 再反转原创 2016-08-19 11:11:18 · 514 阅读 · 0 评论 -
Leetcode 8. String to Integer (atoi)
题意:实现atoi();思路:题目简单,坑不好趟,改了好久atoi()规则如下:1.忽略首空格2.如果碰见不合法的输入,以最大能匹配的合法输入计算:比如123abc 会输出 123234T32 会输出 234否则返回03.支持加号4.如果上溢出,则输出最大值;如果下溢出,则输出最小值代码如下:(不建议看,写的太乱了)int myAtoi(string str) { // i...原创 2016-08-19 19:22:49 · 299 阅读 · 0 评论 -
Leetcode 124. Binary Tree Maximum Path Sum
题意:跟一个二叉树,求最大路径和。(路径和被定义为,从一个节点到另一个节点的值得和,注意:不一定是叶子节点) 思路: 1,最长路径和,必定是以某个节点为根,以此节点左子树的根到某个节点的最大路径,以此节点右子树的根到某节点的最大路径,的和。 2.对于一个节点,只存在3种情况,此节点是最长路径和的根,最长路径和的根在此节点的左子树,最长路径和的根在此节点的右子树 3.可以用递归解决,原创 2016-08-31 12:50:39 · 301 阅读 · 0 评论 -
Leetcode 148. Sort List
题意:链表排序,要求复杂度n*logn; 思路:这道题用了好长时间 ,我先用快速排序做的,结果超时了,发现样例中重复数据很多,看来有意不让用快拍。于是乎想到了归并排序,这应该是我第一次写完整的归并排序,特意分模块优美了一些。一下就是链表的归并排序 ListNode* sortList(ListNode* head) { ListNode *p;原创 2016-09-02 22:09:34 · 329 阅读 · 0 评论 -
Leetcode 137. Single Number II
题意:给定一个数组,已知这个数组中有一个数出现了一次,其它数都出现三次。找出这个数 解法: 有个很好理解的解法,因为int有32位,所以开一个数组bit[32],遍历32次,把每个位出现的次数分别存入数组中,最后bit[32]分别对3取模,得到的结果,只出现一次的数。 这个算法的时间复杂度为O(32*N),相当的高。 从别的地方you看到另一种解法,复杂度为O(N),乍一看看不懂,原创 2016-09-17 15:44:00 · 310 阅读 · 0 评论