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值。
相关推荐
u0109272712 小时前
C++与人工智能框架
开发语言·c++·算法
Fleshy数模2 小时前
从欠拟合到正则化:用逻辑回归破解信用卡失信检测的召回率困境
算法·机器学习·逻辑回归
im_AMBER2 小时前
Leetcode 111 两数相加
javascript·笔记·学习·算法·leetcode
TracyCoder1232 小时前
LeetCode Hot100(21/100)——234. 回文链表
算法·leetcode·链表
驭渊的小故事2 小时前
类和对象的笔记3
笔记
可涵不会debug2 小时前
Redis魔法学院——第四课:哈希(Hash)深度解析:Field-Value 层级结构、原子性操作与内部编码优化
数据库·redis·算法·缓存·哈希算法
@––––––2 小时前
力扣hot100—系列1
算法·leetcode·职场和发展
老鼠只爱大米2 小时前
LeetCode经典算法面试题 #236:二叉树的最近公共祖先(RMQ转化、Tarjan离线算法等五种实现方案详细解析)
算法·leetcode·二叉树·lca·并查集·最近公共祖先·rmq
问好眼2 小时前
【信息学奥赛一本通】1296:开餐馆
c++·算法·动态规划·信息学奥赛
yxm26336690812 小时前
【洛谷压缩技术续集题解】
java·开发语言·算法