2026.1.11力扣刷题笔记

题目:

解答:

cpp 复制代码
int deep(struct TreeNode* root,int* dist){
    if(root==NULL)
        return 0;
    int left_level=deep(root->left,dist);
    int right_level=deep(root->right,dist);
    if(left_level+right_level>*dist)//key步骤
        *dist=left_level+right_level;     
    if (left_level >= right_level)
        left_level++;
    else
        right_level++;
    int max;
    max=(left_level>=right_level)?left_level:right_level;
    return max;
}
int diameterOfBinaryTree(struct TreeNode* root) {
    int dist=0;
    deep(root,&dist);
    return dist;
}
心得:原思路想的是直接root节点的左子树深度加上右子树深度就能得到最大深度,但是测试样例有五个过不了。后面看大佬的想到可能出现子树中出现最大dist,就定义一个参数记录每个结点的最大深度,最后返回全树的最大深度。

题目:

解答:

cpp 复制代码
struct TreeNode* buildtree(int* nums,int left,int right){
    if (left > right) {
        return NULL;
    }
    int mid=(left+right)/2;
    struct TreeNode* root=(struct TreeNode*)malloc(sizeof(struct TreeNode));
    root->val=nums[mid];
    root->left=buildtree(nums,left,mid-1);
    root->right=buildtree(nums,mid+1,right);
    return root;
}
struct TreeNode* sortedArrayToBST(int* nums, int numsSize) {
        return buildtree(nums,0,numsSize-1);
}
心得:题目要求就是将数组转化为构建一颗平衡树,所以很容易想到使用折半的方法,每次使用mid作为根节点进行递归,但需要注意递归的结束条件设定以及创建根节点等细节处理。

题目:

解答:

cpp 复制代码
int searchInsert(int* nums, int numsSize, int target) {
    if(target<nums[0])
        return 0;
    if(target>nums[numsSize-1])
        return numsSize;
    int left=0,right=numsSize-1;
    int mid;
    while(left<=right){
        mid=(right+left)/2;
        if(nums[mid]==target)
            return mid;
        else if(nums[mid]<target)
            left=mid+1;
        else
            right=mid-1;
    }
    return left;
}
心得:折半查找,找到之后返回mid的下标;没找到时,总是返回left指针指向的值,该值始终大于当前mid值。
相关推荐
To_OC7 小时前
LC 51 N 皇后:我以为难的是回溯,结果栽在了对角线下标
javascript·算法·leetcode
2401_841495648 小时前
【操作系统】进程同步与互斥实验报告
c++·算法·操作系统·进程·并发·同步·互斥
克里斯蒂亚诺更新8 小时前
ruoyi角色权限的对应关系
笔记
a11177611 小时前
2FA 验证码生成器(github登录验证 app)
笔记·学习
爱刷碗的苏泓舒12 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
破碎的南瓜12 小时前
sqli--sql注入过关笔记(1,2,3,4,5,9)
数据库·笔记·sql
你想知道什么?13 小时前
线性回归-学习笔记
笔记·学习·线性回归
谙弆悕博士13 小时前
系统集成项目管理工程师教程(第3版)笔记——第17章:法律法规和标准规范
笔记·职场和发展·学习方法·业界资讯·软考·法律·法规
烬羽15 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法