06 2017 档案

摘要:链接 "83. Remove Duplicates from Sorted List" 题意 在有序链表中移除重复的元素。使每个元素只出现一次。 思路 给每个结点做这样一个处理即可:判断这个结点和下一个结点值是否相等,若相等,则将当前结点替换为下一个结点,否则不变。再对下个结点进行同样的判断,直到最 阅读全文
posted @ 2017-06-29 18:49 zyoung 阅读(122) 评论(0) 推荐(0)
摘要:链接 "231. Power of Two" 题意 2的幂。 给定一个整数,判断其是否为2的幂。 思路 又是位运算的巧妙运用。可知,如果一个数为2的幂,那么它的二进制形式中肯定只有一个数为1,比如0100 0000、0000 0010等,由位运算n & (n 1)可知,其作用是让n的二进制形式最后一 阅读全文
posted @ 2017-06-23 09:43 zyoung 阅读(125) 评论(0) 推荐(0)
摘要:链接 "202. Happy Number" 题意 快乐数字。 定义:给定一个正整数,求其每一位的平方和。对平方和重复这个过程,直到结果为1。若永远达不到1则不是快乐数字。 思路 由于判定为非快乐数字时,我们不能让程序陷入死循环,这样永远也无法得到结果。因此可以用一个Set记录已经出现过的数,当新的 阅读全文
posted @ 2017-06-23 09:32 zyoung 阅读(182) 评论(0) 推荐(0)
摘要:链接 "121. Best Time to Buy and Sell Stock" 题意 买股票, 注意只能买卖一次。 思路 用min记录已遍历的最小值(相当于买入),同时用当前值(相当于卖出)减去min,不断更新最大利润即可。 代码 阅读全文
posted @ 2017-06-21 18:30 zyoung 阅读(147) 评论(0) 推荐(0)
摘要:链接 "405. Convert a Number to Hexadecimal" 题意 给定一个整数,将其转化为十六进制数。 思路 循环:每次将num和0xf(也即二进制的1111)进行与操作,这样便可得到num十六进制表示时的最后一位数的十进制表示形式(也即s的下标),再进行字符串拼接即可。 代 阅读全文
posted @ 2017-06-21 16:49 zyoung 阅读(154) 评论(0) 推荐(0)
摘要:链接 "415. Add Strings" 题意 给定两个以字符串形式表示的整数,计算它们的和。 注意不能使用内置的库方法。 思路 因为两个数是字符串,因此不能直接相加。 我们手动做加法时,是从两个数的最后一位开始逐位计算。因此也可以从两个字符串的尾部开始遍历,分别用两个变量指示要计算的位,相加即可 阅读全文
posted @ 2017-06-21 16:17 zyoung 阅读(134) 评论(0) 推荐(0)
摘要:链接 "108. Convert Sorted Array to Binary Search Tree" 题意 将已排序数组转为高度平衡的二叉搜索树 思路 高度平衡即需当任意结点视为根结点时,该树都为二叉搜索树。 因此,可先将中间数作为根结点,根结点的左孩子结点则选取根结点左边区域的中间数,右孩子结 阅读全文
posted @ 2017-06-06 10:11 zyoung 阅读(129) 评论(0) 推荐(0)
摘要:链接 "572. Subtree of Another Tree" 题意 树的子树 给定两颗非空树s和t,判断t是否为s的子树。 s也可视为自己的子树 思路 另写一个判断两棵树是否完全相同的方法。递归遍历s的每个结点,与t调用这个方法进行比较即可。 代码 阅读全文
posted @ 2017-06-06 10:08 zyoung 阅读(192) 评论(0) 推荐(0)
摘要:链接 "543. Diameter of Binary Tree" 题意 二叉树的直径 给定一个二叉树,计算出二叉树的最大直径。 最大直径定义为:二叉树中某两个结点之间的最长路径,这个路径可能不会经过根结点。 思路 利用递归,每遍历一层时分别用两个变量记录左、右孩子结点的最长路径,通过相加更新最大值 阅读全文
posted @ 2017-06-06 10:00 zyoung 阅读(153) 评论(0) 推荐(0)