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值。
相关推荐
颜酱3 小时前
图结构完全解析:从基础概念到遍历实现
javascript·后端·算法
m0_736919103 小时前
C++代码风格检查工具
开发语言·c++·算法
yugi9878383 小时前
基于MATLAB强化学习的单智能体与多智能体路径规划算法
算法·matlab
Gain_chance3 小时前
34-学习笔记尚硅谷数仓搭建-DWS层最近一日汇总表建表语句汇总
数据仓库·hive·笔记·学习·datagrip
DuHz3 小时前
超宽带脉冲无线电(Ultra Wideband Impulse Radio, UWB)简介
论文阅读·算法·汽车·信息与通信·信号处理
Polaris北极星少女4 小时前
TRSV优化2
算法
Gain_chance4 小时前
36-学习笔记尚硅谷数仓搭建-DWS层数据装载脚本
大数据·数据仓库·笔记·学习
代码游侠5 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法
2301_763472465 小时前
C++20概念(Concepts)入门指南
开发语言·c++·算法
肖永威5 小时前
macOS环境安装/卸载python实践笔记
笔记·python·macos