【leetcode】 剑指 Offer学习计划(java版本含注释)(下)-第二十天(分治算法)

时间:2024-03-05 13:10:44

剑指 Offer 07. 重建二叉树(中等)*

题目:

输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。

假设输入的前序遍历和中序遍历的结果中都不含重复的数字。


思路:

第二十一天(位运算)

剑指 Offer 15. 二进制中1的个数(简单)

题目:leetcode:剑指 Offer 15. 二进制中1的个数


思路:

public class Solution {
    // you need to treat n as an unsigned value
    public int hammingWeight(int n) {
        
        int x=1;
        int sum=0;
        while(n!=0){
            //此处记得括号
            if((n&x)==1){
                sum++;
            }
			
			//可以将上面一步到位
			//  sum += n & 1;
				
            //本题要求把数字 n 看作无符号数,因此使用 无符号右移 操作
            //无符号的移动为>>>
            n=n>>>1;
        }
        return sum;
        
    }
}

剑指 Offer 65. 不用加减乘除做加法(简单)*

题目:leetcode:剑指 Offer 65. 不用加减乘除做加法


思路:
这道题的题解主要参考k神题解
在这里插入图片描述

class Solution {
    public int add(int a, int b) {
        while(b != 0) { // 当进位为 0 时跳出
            int c = (a & b) << 1;  // c = 进位
            a ^= b; // a = 非进位和
            b = c; // b = 进位
        }
        return a;
    }
}