首页 > 其他分享 >LeetCode HOT 100 记录

LeetCode HOT 100 记录

时间:2024-11-07 23:18:57浏览次数:4  
标签:right TreeNode val int HOT 100 root LeetCode left

目录

230. 二叉搜索树中第 K 小的元素 - 力扣(LeetCode)

相当于把二叉搜索树从小到大排序,而二叉搜索树有一个特点,就是顺序左子树 < 根节点 < 右子树,因此可以考虑使用中序遍历

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {
    int now = 0;
    int ans = 0;
    
    public int kthSmallest(TreeNode root, int k) {
        find(root, k);
        return ans;
    }

    public void find(TreeNode root, int k) {
        if (root == null) {
            return;
        }
        find(root.left, k);
        if (++now == k) {
            ans = root.val;
            return;
        }
        find(root.right, k);
    }

}

199. 二叉树的右视图 - 力扣(LeetCode)

按照中 -> 右 -> 左遍历,只要每层记录一下第一个遍历到的节点

/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode() {}
 *     TreeNode(int val) { this.val = val; }
 *     TreeNode(int val, TreeNode left, TreeNode right) {
 *         this.val = val;
 *         this.left = left;
 *         this.right = right;
 *     }
 * }
 */
class Solution {

    public List<Integer> rightSideView(TreeNode root) {
        List<Integer> ans = new ArrayList<>();
        find(root, ans, 0);
        return ans;
    }

    public void find(TreeNode root, List<Integer> ans, int now) {
        if (root == null) {
            return ;
        }
        if (ans.size() <= now) {
            ans.add(root.val);
        }
        find(root.right, ans, now+1);
        find(root.left, ans, now+1);
    }

}

标签:right,TreeNode,val,int,HOT,100,root,LeetCode,left
From: https://www.cnblogs.com/MMMMMMMW/p/18534219

相关文章

  • 代码随想录算法训练营第九天|LeetCode151.翻转字符串里的单词、卡码网:55.右旋转字符串
    前言打卡代码随想录算法训练营第49期第九天︿( ̄︶ ̄)︿首先十分推荐学算法的同学可以先了解一下代码随想录,可以在B站卡哥B站账号、代码随想录官方网站代码随想录了解,卡哥清晰易懂的算法教学让我直接果断关注,也十分有缘和第49期的训练营大家庭一起进步。今日题目LeetCode151翻转字......
  • LeetCode 1137[第N个泰波那契数]
    题目链接LeetCode1137[第N个泰波那契数]详情实例实例1实例2提示题解思路一[递归]当n为0,1,2时,直接返回对应的值当n大于2时,开始用f(n+3)=f(n)+f(n+1)+f(n+2)来递归求值代码一[此代码在力扣会超出时间限制]classSolution{public:inttrib......
  • CF Round 984 C. Anya and 1100(模拟)
    传送门https://codeforces.com/contest/2036/problem/C解题思路先扫一遍字符串,判断有几个1100子串。然后,对于每一次操作,可以算出对答案的影响,减去更改会减少的子串,再加上更改后会增加的子串。代码#include<bits/stdc++.h>usingnamespacestd;chars[200001];intq......
  • 毕业设计-精品在线试题库系统源码+10000字论文
    项目简介精品在线试题库系统是一个多功能的在线教育平台,旨在提高教学和学习的效率。系统主要服务于三个核心角色:管理员、教师和学生,每个角色都有特定的功能权限。管理员功能:个人中心:管理员的个性化操作界面。专业管理:添加、查询、修改和删除专业信息。学生管理:对学生信息......
  • LeetCode LCR135[报数]
    题目链接LeetCodeLCR135[报数]详情实例题解思路通过pow函数对10进行幂运算,来获取报数范围然后循环遍历通过push_back方法将数字加入到容器内代码classSolution{public:vector<int>countNumbers(intcnt){vector<int>iRetVec;......
  • 【LeetCode】返回链表的中间结点、删除链表的倒数第 N 个结点
    主页:HABUO......
  • zero-shot、one-shot、few-shot
    总结对比 zero-shot是一种机器学习方法,指的是模型能够处理从未在训练数据中见过的任务或类别,即模型在面对新任务时不需要额外的训练和微调也能做出合理的决策。以视觉场景为例,如CLIP(ContrastiveLanguage-ImagePre-Training),它将图像和文本嵌入到同一个语义空间中,使得模型能......
  • 结合创新,小波变换+注意力机制竟能实现100%分类准确率
    2024深度学习发论文&模型涨点之——小波变换+注意力机制小波变换是一种先进的信号分析技术,它擅长捕捉信号的局部特征,但有时可能会忽略数据中的关键信息。为了克服这一局限,我们引入了注意力机制,这一机制能够强化模型对数据重要部分的关注。通过将小波变换与注意力机制相结合,我......
  • 两个线程交替写1~100
     packageTest;publicclassPrintNumber{privateintstatus=1,cnt=1;synchronizedvoidprint_odd(){while(cnt<100){while(status==2){try{this.wait();}......
  • LeetCode3270[求出数字答案]
    题目链接LeetCode3270[求出数字答案]详情实例实例1实例2实例3提示题解思路先依次取出num1,num2,num3的每位的位数  取最高位的时候,用数字除以1000,然后取10的余数  取第三位的时候,用数字除以100,然后取10的余数  取第二位的时候,用数字除以10,然后取10的余数......