将二叉树转换成树将二叉树转换成森林
题目描述示例:输入:root = [1,2,3,4,5,6]输出:6解法一:递归凡是看到这种求二叉树的节点个数的问题,首先想到能不能用递归,然后如果能用递归的话,我们找出递归的逻辑。比如本题:先确定单层循环逻辑: 先求它的左子树的节点数量,再求它的右子树的节点数量,最后取总和再加一
题目描述给定一个整数,编写一个函数来判断它是否是 2 的幂次方。示例1:输入: 1输出: true解释: 2^0 = 1示例 2:输入: 16输出: true解释: 2^4 = 16解法:我们可以利用 n&(n-1)==0;来判断一个数是不是2的幂次方。比如16的二进制是10000,那么n-1=15的二进制是01111,那么10000&01111=00000,明白了吧,就是这个原理。class Solution { public boole
题目描述颠倒给定的 32 位无符号整数的二进制位。示例输入: 00000010100101000001111010011100输出: 00111001011110000010100101000000解释: 输入的二进制串 00000010100101000001111010011100 表示无符号整数 43261596, 因此返回 964176192,其二进制表示形式为 00111001011110000010100101000000。解法res 要的数字 左移一位 吧最后一个位
计算一个二进制数中 1 的出现次数其实很简单,只需要不断用 v & (v - 1) 移除掉最后一个 1 即可。举个例子,如果v=11010,那么v-1=11001, 则v & (v - 1) =11000,算出的结果和原先的v相比就移除了最后一个1....
题目如下:有2N个QQ号码,其中有一个QQ号码出现的次数大于N次,请找出这个QQ号码。要求:时空复杂度尽可能低。有的人看到题目后就开始做,貌似也能得到正确结果,但无法通过腾讯的面试,主要是算法时空复杂度非最优。解法一.暴力排序排序是最容易想到的一种方法。由于目标QQ号码出现的次数超过数组长度的一半,所以排序后直接取中间元素就行。 我们知道,基于比较的排序,时间复杂度能达到O(NlogN),
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号