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值。
相关推荐
2601_970703835 分钟前
工业除湿机租赁:把一份租金合同拆开看
大数据·数据结构·算法·数据库架构·推荐算法
心中有你02145 分钟前
Java实现Dijkstra最短路径算法(邻接表 + 优先队列)
java·数据库·算法
ZhengEnCi1 小时前
同样的模型,为什么本地和云 API 差别那么大:量化精度、聊天模板与采样参数的三大元凶
人工智能·算法·llm
Flynn Liang1 小时前
RAG 答非所问/幻觉怎么破?Spring AI QuestionAnswerAdvisor 召回优化实战(TopK/重排/混合检索)
人工智能·算法·spring·rag·幻觉·springai
liminla!2 小时前
SQL 从入门到进阶:语法速查与实战练习(完整优化版)
数据库·sql·算法
维克兜率天3 小时前
【维克】指数调整:哪些股票会被“强制买入“?
人工智能·python·算法
罗西的思考4 小时前
【轻量化复刻大模型】线性注意力交互式演示
人工智能·算法·机器学习
神也畏惧菠萝4 小时前
Day08 Python流程控制从入门到上瘾:if/match/while/for四件套,从B站登录一路打到猜数字游戏
python·算法·数据存储·for·while·if·ifelse
箓维4 小时前
TCP Socket的进阶实现
网络·笔记·tcp/ip