力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

news/2024/10/5 23:09:17/

力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)

文章目录

      • 力扣爆刷第159天之TOP100五连刷61-65(翻转单词、对称二叉树、遍历求和)
      • 一、151. 反转字符串中的单词
      • 二、129. 求根节点到叶节点数字之和
      • 三、104. 二叉树的最大深度
      • 四、101. 对称二叉树
      • 五、144. 二叉树的前序遍历

一、151. 反转字符串中的单词

题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/description/
思路:很经典的题目,翻转字符串中的单词,只需要把所有单词都翻转,然后再整体翻转就可以。具体的实现方式有很多,比如用stringbuilder拼接然后翻转的,也有用集合收集之后翻转的,都可以。

class Solution {public String reverseWords(String s) {StringBuilder sb = new StringBuilder();StringBuilder temp = new StringBuilder();for(char c : s.toCharArray()) {if(c != ' ') temp.append(c);else if(temp.length() > 0) {sb.append(temp.reverse()).append(' ');temp = new StringBuilder();}}if(temp.length() != 0) sb.append(temp.reverse());if(sb.charAt(sb.length()-1)  == ' ') sb.deleteCharAt(sb.length()-1);return sb.reverse().toString();}}

二、129. 求根节点到叶节点数字之和

题目链接:https://leetcode.cn/problems/sum-root-to-leaf-numbers/description/
思路:本题怎么都可以做,求的是从根节点到叶子节点的每一条通路都是一个数,这个数是从根节点拼接到叶子节点的。所以可以使用前序遍历,但是又要注意回溯返回,有回溯的思想在里面。其他的就没有了。

class Solution {int sum = 0;public int sumNumbers(TreeNode root) {backTracking(root, 0);return sum;}void backTracking(TreeNode root, int temp) {if(root == null) return;temp = root.val + temp * 10;if(root.left == null && root.right == null) {sum += temp;}backTracking(root.left, temp);backTracking(root.right, temp);}}

三、104. 二叉树的最大深度

题目链接:https://leetcode.cn/problems/maximum-depth-of-binary-tree/description/
思路:求最大深度,没啥好说的经典后序遍历,返回左右子树的最大深度作为最大深度。

class Solution {public int maxDepth(TreeNode root) {if(root == null) return 0;int left = maxDepth(root.left);int right = maxDepth(root.right);return Math.max(left, right) + 1;}
}

四、101. 对称二叉树

题目链接:https://leetcode.cn/problems/symmetric-tree/description/
思路:求二叉树是否对称,直接把数竖着分成两半来看,然后前序遍历比较即可。

class Solution {public boolean isSymmetric(TreeNode root) {return traverse(root.left, root.right);}boolean traverse(TreeNode node1, TreeNode node2) {if(node1 == null && node2 == null) return true;if(node1 == null|| node2 == null) return false;if(node1.val != node2.val) return false;return traverse(node1.left, node2.right) && traverse(node1.right, node2.left);}}

五、144. 二叉树的前序遍历

题目链接:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/
思路:这个就是前序遍历收集,没啥可说的。

class Solution {List<Integer> list = new ArrayList<>();public List<Integer> preorderTraversal(TreeNode root) {if(root == null) return list;list.add(root.val);preorderTraversal(root.left);preorderTraversal(root.right);return list;}
}

http://www.ppmy.cn/news/1473566.html

相关文章

Perl变量作用域全解析:掌握变量的可见之旅

Perl变量作用域全解析&#xff1a;掌握变量的可见之旅 Perl是一种灵活的脚本语言&#xff0c;以其对文本处理的强大能力而闻名。在Perl编程中&#xff0c;变量作用域的概念至关重要&#xff0c;它决定了变量在代码中的可见性和生命周期。本文将深入探讨Perl中变量作用域的定义…

VPN是什么?

VPN&#xff0c;全称Virtual Private Network&#xff0c;即“虚拟私人网络”&#xff0c;是一种在公共网络&#xff08;如互联网&#xff09;上建立加密、安全的连接通道的技术。简单来说&#xff0c;VPN就像是一条在公共道路上铺设的“秘密隧道”&#xff0c;通过这条隧道传输…

在uni-app使用vue3使用vuex

在uni-app使用vue3使用vuex 1.在项目目录中新建一个store目录&#xff0c;并且新建一个index.js文件 import { createStore } from vuex;export default createStore({//数据&#xff0c;相当于datastate: {count:1,list: [{name: 测试1, value: test1},{name: 测试2, value: …

昇思MindSpore25天学习打卡Day17:K近邻算法实现红酒聚类

昇思MindSpore25天学习打卡Day17&#xff1a;K近邻算法实现红酒聚类 1 实验目地2 K近邻算法(KNN)原理介绍2.1 分类问题2.2 回归问题2.3 距离的定义 3 实验环境4 数据处理4.1 数据准备4.2 数据读取与处理4.2.1 导入MindSpore模块和辅助模块 5 模型构建--计算距离6 模型预测 及 打…

Kylin多维数据仓库架构解析:释放大数据潜能的秘诀

Kylin多维数据仓库架构解析&#xff1a;释放大数据潜能的秘诀 Apache Kylin是一款开源的分布式多维数据仓库架构&#xff0c;旨在为超大规模数据集提供快速的SQL查询能力。与传统的数据仓库解决方案相比&#xff0c;Kylin的多维数据仓库架构具有独特的特点和优势。本文将深入探…

C#编程命名笔记

1.变量名的命名规则->要求用“匈牙利法则” 变量类型特征位数命名规则例子bool 用b开头bUpdatesbyte有符号8位用sby开头sbyTypebyte无符号8位用by开头byTypeshort有符号16位用n开头nStepCountushort无符号16位用un开头unCountint有符号32位用i开头iCountuint&#xff08;WO…

python conda查看源,修改源

查看源 conda config --show-sources 修改源 可以直接vim .condarc修改源&#xff0c;

入门机器视觉的正确打开方式——徒手撸一个python+opencv实现的机器视觉简易调试工具(下)

目录 1.引言2.框架思路3.图像处理流程化的实现3.1如何解析图像流程数据结构3.2 使用networkx网络图库3.3 python实现 4.结论5.python源码PS.扩展阅读ps1.六自由度机器人相关文章资源ps2.四轴机器相关文章资源ps3.移动小车相关文章资源 1.引言 在当今AI时代&#xff0c;关于视觉…