双非本科准备秋招(23.1)—— 力扣二叉搜索树

2024-02-14 05:44

本文主要是介绍双非本科准备秋招(23.1)—— 力扣二叉搜索树,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 1、501. 二叉搜索树中的众数

        中序遍历得到有序数组和最高频次,然后再次遍历有序数组。

        可以改进一下,只遍历一次:每次更新最大值的时候,顺便清空数组,这样最后数组里一定都是最高频次的元素了。

class Solution {List<Integer> list = new ArrayList<>();int cnt = 1;TreeNode pre = null;int maxValue = 0;public int[] findMode(TreeNode root) {inOrder(root);return list.stream().mapToInt(Integer::intValue).toArray();}void inOrder(TreeNode root){if(root == null) return ;inOrder(root.left);if(pre != null){if(pre.val == root.val){cnt++;}else{//不相等,说明遇到新元素cnt = 1;}}pre = root;// maxValue = Math.max(maxValue, cnt);if(cnt == maxValue){list.add(root.val);}else if(cnt > maxValue){maxValue = cnt;list.clear();list.add(root.val);}inOrder(root.right);}
}

2、236. 二叉树的最近公共祖先

        核心思想就是层层返回拥有p或者q的节点。

class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {return postOrder(root, p, q);}TreeNode postOrder(TreeNode root, TreeNode p, TreeNode q){if(root == null) return root;if(root == p || root == q) return root;TreeNode left = postOrder(root.left, p, q);TreeNode right = postOrder(root.right, p, q);if(left != null && right != null) return root;else if(left == null && right != null) return right;else if(left != null && right == null) return left;else return null; }
}

3、235. 二叉搜索树的最近公共祖先

        根据二叉搜索树的特点,使用前序遍历,只要当前节点的值在p、q之间,就代表当前节点是二叉搜索树的最近公共祖先。

class Solution {public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {LinkedList<TreeNode> stack = new LinkedList<>();if(p.val > q.val){TreeNode x = q;q = p;p = x;}while(root != null || !stack.isEmpty()){if(root != null){if(root.val >= p.val && root.val <= q.val){return root;}stack.push(root);root = root.left;}else{TreeNode t = stack.pop();root = t.right;}}return null;}
}

这篇关于双非本科准备秋招(23.1)—— 力扣二叉搜索树的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/707645

相关文章

Python使用DeepSeek进行联网搜索功能详解

《Python使用DeepSeek进行联网搜索功能详解》Python作为一种非常流行的编程语言,结合DeepSeek这一高性能的深度学习工具包,可以方便地处理各种深度学习任务,本文将介绍一下如何使用P... 目录一、环境准备与依赖安装二、DeepSeek简介三、联网搜索与数据集准备四、实践示例:图像分类1.

C# ComboBox下拉框实现搜索方式

《C#ComboBox下拉框实现搜索方式》文章介绍了如何在加载窗口时实现一个功能,并在ComboBox下拉框中添加键盘事件以实现搜索功能,由于数据不方便公开,作者表示理解并希望得到大家的指教... 目录C# ComboBox下拉框实现搜索步骤一步骤二步骤三总结C# ComboBox下拉框实现搜索步骤一这

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

hdu1240、hdu1253(三维搜索题)

1、从后往前输入,(x,y,z); 2、从下往上输入,(y , z, x); 3、从左往右输入,(z,x,y); hdu1240代码如下: #include<iostream>#include<algorithm>#include<string>#include<stack>#include<queue>#include<map>#include<stdio.h>#inc

秋招最新大模型算法面试,熬夜都要肝完它

💥大家在面试大模型LLM这个板块的时候,不知道面试完会不会复盘、总结,做笔记的习惯,这份大模型算法岗面试八股笔记也帮助不少人拿到过offer ✨对于面试大模型算法工程师会有一定的帮助,都附有完整答案,熬夜也要看完,祝大家一臂之力 这份《大模型算法工程师面试题》已经上传CSDN,还有完整版的大模型 AI 学习资料,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

hdu 4517 floyd+记忆化搜索

题意: 有n(100)个景点,m(1000)条路,时间限制为t(300),起点s,终点e。 访问每个景点需要时间cost_i,每个景点的访问价值为value_i。 点与点之间行走需要花费的时间为g[ i ] [ j ] 。注意点间可能有多条边。 走到一个点时可以选择访问或者不访问,并且当前点的访问价值应该严格大于前一个访问的点。 现在求,从起点出发,到达终点,在时间限制内,能得到的最大

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

hdu4277搜索

给你n个有长度的线段,问如果用上所有的线段来拼1个三角形,最多能拼出多少种不同的? import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;

两数之和--力扣1

两数之和 题目思路C++代码 题目 思路 根据题目要求,元素不能重复且不需要排序,我们这里使用哈希表unordered_map。注意题目说了只对应一种答案。 所以我们在循环中,使用目标值减去当前循环的nums[i],得到差值,如果我们在map中能够找到这个差值,就说明存在两个整数的和为目标值。 如果没有找到,就将当前循环的nums[i]以及下标i放入map中,以便后续查

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述