当前位置: 首页 > news >正文

代码随想录算法训练营之JAVA|第十七天| 654. 最大二叉树

今天是第17天刷leetcode,立个flag,打卡60天。

算法挑战链接

654. 最大二叉树icon-default.png?t=N6B9https://leetcode.cn/problems/maximum-binary-tree/description/

第一想法

错误的想法,就不说了。

看完代码随想录之后的想法 

用递归模拟真实的过程

如果我们我们自己使用手动来画我们会怎么画?

我想大概的一个流程应该是这样的

  1. 找到最大值,形成节点
  2. 在最大值的左边,重复
  3. 在最大值的右边,重复
  4. 值到所有的数组中的数都形成数的节点

于是代码也就是对这个流程的描述了

/*** 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 TreeNode constructMaximumBinaryTree(int[] nums) {return repeatByNums(nums, 0, nums.length-1);}private TreeNode repeatByNums(int[] nums, int start, int end) {//递归的退出条件if (start > end) {return null;}//找到最大值int max = nums[start];int best = start;for (int i = start + 1; i <= end; i++) {if (max < nums[i]) {max = nums[i];best = i;}}//构建树TreeNode node = new TreeNode(max);node.left = repeatByNums(nums, start, best - 1);node.right = repeatByNums(nums, best + 1, end);return node;}
}

实现过程中遇到哪些困难 

在写找最大值的时候,写成了 i < end, 应该是 i <= end。

为什么呢,因为nums[end]也是需要被比较的。

今日收获

让我重新看待了递归这个方法,递归可以解决我们重复的动作可以解决的题目。

http://www.lryc.cn/news/103720.html

相关文章:

  • C++重写函数、隐藏函数、重载函数的区别对比
  • 15.python设计模式【函数工厂模式】
  • Redis主从复制、哨兵、cluster集群原理+实验
  • 微信小程序如何实现页面传参?
  • OPC DA 客户端与服务器的那点事
  • Java 错误异常介绍(Exceptions)
  • 每日一题——旋转数组的最小数字
  • SpringBoot Jackson 日期格式化统一配置
  • 剑指 Offer 38. 字符串的排列 / LeetCode 47. 全排列 II(回溯法)
  • 【前端知识】React 基础巩固(四十三)——Effect Hook
  • 一百三十八、ClickHouse——使用clickhouse-backup备份ClickHouse库表
  • 【无标题】使用Debate Dynamics在知识图谱上进行推理(2020)7.31
  • windows下若依vue项目部署
  • 【目标检测】基于yolov5的水下垃圾检测(附代码和数据集,7684张图片)
  • P1734 最大约数和
  • Excel将单元格中的json本文格式化
  • Baumer工业相机堡盟工业相机如何通过BGAPI SDK获取相机当前实时帧率(C#)
  • XGBoost的基础思想与实现
  • 【Docker】Docker的服务更新与发现
  • 【Docker 学习笔记】Docker架构及三要素
  • matlab编程实践14、15
  • C++ ——STL容器【list】模拟实现
  • ubuntu 16.04 安装mujoco mujoco_py gym stable_baselines版本问题
  • 自然语言处理(NLP)技术
  • 如何将ubuntu LTS升级为Pro
  • 如何学习ARM嵌入式开发?
  • 二、使用运行自己的docker python容器环境
  • mac版窗口管理 Magnet for mac中文最新
  • Redis(五)—— Redis进阶部分
  • Go Ethereum源码学习笔记000