![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Leetcode题解
文章平均质量分 91
_silverBlack
程序媛 刺密
展开
-
Leetcode 226. Invert Binary Tree
Leetcode 226:常规解法:递归invert左子树和右子树,之后交换左右子树(相当于前面递归invert只是保证子树内部得invert,后来交换左右子树是子树之间的invert)也可以用stack来做,将每一层的节点压入栈中,取出栈顶元素,再将其左右子节点先后压入栈,交换栈顶元素的左右子节点。两种解法如下:原创 2017-04-20 16:15:02 · 205 阅读 · 0 评论 -
leetcode 9 回文数
上原题先:要求判断输入整数是否是回文数,并且不能使用额外空间。两种思路:1、第一种就是比较整数x的第一个元素和末尾元素,是否相等,不等直接false;否则,刨除掉这两个元素后,继续比较第一个元素和末尾元素,重复上述步骤。bool isPalindrome(int x) { if(x < 0) { return false; } int i, j, d原创 2017-05-17 11:55:12 · 196 阅读 · 0 评论 -
Leetcode 231 and 342. Power of 2, Power of 4
上原题先:把Leetcode这两道题目放一起,其实这两个是相似的。完全可以通过循环来做,在不能用循环的条件下如何求解?方法一:通过考虑位运算。精妙绝伦的解法。方法二:与方法一类似,只不过在满足num为2的幂前提下,决定num是不是4的幂的方法略微有差别:理由如下:至于为什么2^(2k)-1一定可以被3整除,可以通过数学归纳法证原创 2017-05-09 20:21:22 · 205 阅读 · 0 评论 -
Leetcode141. Linked List Cycle
先贴图:即 检测单向链表是否成环。 参考博文:检测单向链表是否存在环 链表成环的检测问题描述:在单向链表中,每个结点都包含一个指向下一个结点的指针,最后一个结点的这个指针被设置为空。但如果把最后一个结点的指针指向链表中存在的某个结点,就会形成一个环,在顺序遍历链表的时候,程序就会陷入死循环。我们的问题就是,如何检测一个链表中是否有环,如果检转载 2017-05-26 20:10:46 · 82 阅读 · 0 评论 -
Leetcode 437. Path Sum III
先上原题:显然,这道题目可以递归求解。先比较当前root的val和sum是否相等,相等,则path的数目+1,否则,就去左右子树寻找路径(子问题)。问题的关键在于需要判断找到的路径为连续的,比如在这个例子里面,10和-2虽然得到的sum=8,但是它们中间并不连续(5,3这两个节点断掉了)。我们可以增加一个bool变量解决这个问题,bool hasHead,若hasHead=tr原创 2017-07-17 11:36:07 · 203 阅读 · 0 评论 -
Leetcode 506. Relative Ranks
先上题目:两个思路:1. 暴力法。对输入的数组nums[]中的每一个元素都计算它在数组中的大小顺序rank,然后根据rank来计算输出,用switch case语句直接搞定。nums[]有n个元素,每个元素都需要与数组中的其他元素比较一次,时间复杂度是O(n^2) 测试通过时间116ms 代码见下:int getDigit(int n);void itoa(int val,原创 2017-08-09 18:07:58 · 200 阅读 · 0 评论 -
Leetcode 643 Maximum Average Subarray I
先放题目:题目的Solution其实给出了比较详细的解法。见SolutionApproach #1 Brute Force [Time Limit Exceeded]The naive solution is to consider every possible subarray with length equal tokk, and to find out原创 2017-07-26 19:32:16 · 223 阅读 · 0 评论 -
Leetcode 405. Convert a Number to Hexadecimal
先上题目本题目的难点应该在于负数需要按照补码(补码的相关知识见前面的博文原码,反码,补码)进行16进制转换。本题有两种思路,第一种就是对正数,0和负数三种情况分别进行处理,正数和0的情况不难考虑,对于负数,先求出负数对应的二进制补码,再将这32位二进制数四个一组转成16进制。求负数对应的二进制补码时,先求该负数对应的原码,再求反码,最后求得补码。此时需要注意的是,32位二进制数采用补码原创 2017-09-03 19:52:26 · 244 阅读 · 0 评论