摘要:
链接 "326. Power of Three" 题意 3的幂。 给定一个整数,判断其是否为3的幂。 思路 较好的办法是计算出整型范围内3的幂的最大值,用这个值来模3,若等于0则成立。 代码 阅读全文
摘要:
链接 "543. Diameter of Binary Tree" 题意 爬楼梯。 爬一个需要n步才能到顶端的楼梯。现要求每次只能走1步或2步,问有多少种方法到达顶端。 思路 假设step[n]代表n级台阶的答案。那么试想到达顶端前一步只有两种状态:只剩一级台阶或只剩两级台阶,那么到达这两种状态有多 阅读全文
摘要:
链接 "617. Merge Two Binary Trees" 题意 合并两颗树。 给出两颗树,合并成新树。若它们相同位置上的节点均非空,那么新树对应位置的节点值则为原节点值之和。若只有一个节点为空,那么新节点为非空节点值。若均为空,新树对应节点也为空。 思路 直接同时遍历两颗树,利用其中一棵树进 阅读全文
摘要:
链接 "606. Construct String from Binary Tree" 题意 根据二叉树构建符合规则的字符串:输出每个节点,对于子节点,分别用圆括号即()括住左右子节点,若子节点为空,则直接用()代替,但需要在不引起歧义的情况下省略为空的括号。输出顺序为树的前序遍历顺序。 思路 利用 阅读全文
摘要:
链接 "83. Remove Duplicates from Sorted List" 题意 在有序链表中移除重复的元素。使每个元素只出现一次。 思路 给每个结点做这样一个处理即可:判断这个结点和下一个结点值是否相等,若相等,则将当前结点替换为下一个结点,否则不变。再对下个结点进行同样的判断,直到最 阅读全文
摘要:
链接 "231. Power of Two" 题意 2的幂。 给定一个整数,判断其是否为2的幂。 思路 又是位运算的巧妙运用。可知,如果一个数为2的幂,那么它的二进制形式中肯定只有一个数为1,比如0100 0000、0000 0010等,由位运算n & (n 1)可知,其作用是让n的二进制形式最后一 阅读全文
摘要:
链接 "202. Happy Number" 题意 快乐数字。 定义:给定一个正整数,求其每一位的平方和。对平方和重复这个过程,直到结果为1。若永远达不到1则不是快乐数字。 思路 由于判定为非快乐数字时,我们不能让程序陷入死循环,这样永远也无法得到结果。因此可以用一个Set记录已经出现过的数,当新的 阅读全文
摘要:
链接 "121. Best Time to Buy and Sell Stock" 题意 买股票, 注意只能买卖一次。 思路 用min记录已遍历的最小值(相当于买入),同时用当前值(相当于卖出)减去min,不断更新最大利润即可。 代码 阅读全文
摘要:
链接 "405. Convert a Number to Hexadecimal" 题意 给定一个整数,将其转化为十六进制数。 思路 循环:每次将num和0xf(也即二进制的1111)进行与操作,这样便可得到num十六进制表示时的最后一位数的十进制表示形式(也即s的下标),再进行字符串拼接即可。 代 阅读全文
摘要:
链接 "415. Add Strings" 题意 给定两个以字符串形式表示的整数,计算它们的和。 注意不能使用内置的库方法。 思路 因为两个数是字符串,因此不能直接相加。 我们手动做加法时,是从两个数的最后一位开始逐位计算。因此也可以从两个字符串的尾部开始遍历,分别用两个变量指示要计算的位,相加即可 阅读全文