Leetcode刷题记录:构建最大数二叉树
题目要求,题目地址
给定一个不含重复数字的数组,最大二叉树构建规则如下:
1、根是数组中最大的数字
2、左边的子树是最大数字左边的内容
3、右边的子树是最大数字右边的内容
答案
class Solution(object):
def constructMaximumBinaryTree(self, nums):
"""
:type nums: List[int]
:rtype: TreeNode
"""
#print(max(nums))
#print(nums.index(max(nums)))
#print(nums)
if len(nums) == 0:
return None
t = TreeNode(max(nums))
if len(nums) > 1:
t.left = self.constructMaximumBinaryTree(nums[:nums.index(max(nums))])
t.right = self.constructMaximumBinaryTree(nums[nums.index(max(nums)) + 1 :])
else:
t.left = None
t.right = None
return t
优化思路
提交后这个答案只打败了17%的对手,分析一下感觉是因为index、len函数调用次数过多,应该可以将结果放在一个变量中,提高执行效率。
本文为作者原创,如果您觉得本文对您有帮助,请随意打赏,您的支持将鼓励我继续创作。

Leetcode刷题记录:构建最大数二叉树的更多相关文章
- leetcode刷题记录--js
leetcode刷题记录 两数之和 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标. 你可以假设每种输入只会对应一个答案.但 ...
- Leetcode刷题记录(python3)
Leetcode刷题记录(python3) 顺序刷题 1~5 ---1.两数之和 ---2.两数相加 ---3. 无重复字符的最长子串 ---4.寻找两个有序数组的中位数 ---5.最长回文子串 6- ...
- LeetCode刷题记录(python3)
由于之前对算法题接触不多,因此暂时只做easy和medium难度的题. 看完了<算法(第四版)>后重新开始刷LeetCode了,这次决定按topic来刷题,有一个大致的方向.有些题不止包含 ...
- leetcode 刷题记录(java)-持续更新
最新更新时间 11:22:29 8. String to Integer (atoi) public static int myAtoi(String str) { // 1字符串非空判断 " ...
- LeetCode 刷题记录(二)
写在前面:因为要准备面试,开始了在[LeetCode]上刷题的历程.LeetCode上一共有大约150道题目,本文记录我在<http://oj.leetcode.com>上AC的所有题目, ...
- LeetCode 刷题记录
写在前面:因为要准备面试,开始了在[LeetCode]上刷题的历程.LeetCode上一共有大约150道题目,本文记录我在<http://oj.leetcode.com>上AC的所有题目, ...
- leetcode刷题记录——树
递归 104.二叉树的最大深度 /** * Definition for a binary tree node. * public class TreeNode { * int val; * Tree ...
- leetCode刷题记录
(1)Linked List Cycle Total Accepted: 13297 Total Submissions: 38411 Given a linked list, determine i ...
- 算法进阶之Leetcode刷题记录
目录 引言 题目 1.两数之和 题目 解题笔记 7.反转整数 题目 解题笔记 9.回文数 题目 解题笔记 13.罗马数字转整数 题目 解题笔记 14.最长公共前缀 题目 解题笔记 20.有效的括号 题 ...
随机推荐
- [转] offsetParent 到底是哪一个?
正文 不同情况 没有已定位的父节点,且自身position:relative的DIV元素的offsetParent为BODY 没有已定位的父节点,且自身position: absolute的DIV元素 ...
- 【LOJ】#2090. 「ZJOI2016」旅行者
题解 每次按较长边把矩形分成两半,找一个中间轴,轴上的每个点跑一边最短路更新所有的答案 然后把矩形分成两半,递归下去 代码 #include <bits/stdc++.h> #define ...
- mybatis中的增删改查操作
在这一个部分,主要进行增删改查的示例书写. 增删改查可以基于xml的,也可以基于注解的方式. 一:对单条数据的查询 1.目录结构 这个使得目录更加清晰 2.User.java 这个使用以前的user表 ...
- Vue $createElement
const h=this.$createElement; h('span', tag, '内容可以是 ') ..... tag完整的数据对象如下: { // 和`v-bind:class`一样的 ...
- 归并排序 递归and非递归
什么是归并排序 归并排序其实就做两件事: “分解”——将序列每次折半划分. “合并”——将划分后的序列段两两合并后排序. 首先我们来看一下分解是怎样实现的呢? // 递归退出条件,及left ...
- 一个轻巧高效的多线程c++stream风格异步日志(二)
目录 一个轻巧高效的多线程c++stream风格异步日志(二) 前言 LogFile类 AsyncLogging类 AsyncLogging实现 增加备用缓存 结语 一个轻巧高效的多线程c++stre ...
- Nuxt.js 学习笔记
起源 最主要的原因时使用vue-cli搭建的SPA(单页应用)不利于搜索引擎的SEO操作.搜索引擎对SPA的抓取并不好,特别是百度根本没法抓取到SPA的内容页面,所以我们必须把我们的应用在服务端渲染成 ...
- 清理.git文件
@echo on color 2f mode con: cols=80 lines=25 @REM @echo 正在清理git文件,请稍候...... @rem 循环删除当前目录及子目录下所有的SVN ...
- BZOJ.4517.[SDOI2016]排列计数(错位排列 逆元)
题目链接 错位排列\(D_n=(n-1)*(D_{n-1}+D_{n-2})\),表示\(n\)个数都不在其下标位置上的排列数. 那么题目要求的就是\(C_n^m*D_{n-m}\). 阶乘分母部分的 ...
- BZOJ3956: Count
Description Input Output Sample Input 3 2 0 2 1 2 1 1 1 3 Sample Output 0 3 HINT M,N<=3*10^ ...