跳至主要內容
53, 最大子序和

一、题目描述

给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组是数组中的一个连续部分。

示例 1
输入: nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4]
输出: 6
解释: 连续子数组[4,-1,2,1]的和最大,为6

示例 2
输入: nums = [1]
输出: 1


Mike大约 3 分钟greedymediumarraydivide and conquerdynamic programming
109, 将有序列表转换为二叉搜索树

一、题目描述

给定一个单链表的头节点head,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树。

本题中,一个高度平衡二叉树是指一个二叉树每个节点的左右两个子树的高度差不超过1

示例 1

输入: head = [-10, -3, 0, 5, 9]
输出: [0, -3, 9, -10, null, 5]
解释: 一个可能的答案是[0,-3, 9,-10, null, 5],它表示所示的高度平衡的二叉搜索树。


Mike大约 3 分钟binary treemediumlinked listbinary treebinary search treedivide and conquer
108, 将有序数组转换为二叉搜索树

一、题目描述

给你一个整数数组nums,其中元素已经按升序排列,请你将其转换为一棵高度平衡二叉搜索树。

高度平衡二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过1」的二叉树。

示例 1

输入: nums = [-10, -3, 0, 5, 9]
输出: [0, -3, 9, -10, null, 5]
解释: [0, -10, 5, null, -3, null, 9] 也将被视为正确答案:


Mike大约 3 分钟binary treeeasytreebinary treebinary search treearraydivide and conquer
654, 最大二叉树

一、题目描述

给定一个不重复的整数数组nums最大二叉树可以用下面的算法从nums递归地构建:

  1. 创建一个根节点,其值为nums中的最大值。
  2. 递归地在最大值左边子数组前缀上构建左子树。
  3. 递归地在最大值右边子数组后缀上构建右子树。

返回nums构建的最大二叉树


Mike大约 5 分钟binary treemediumarraybinary treestackdivide and conquermonotonic stack
106, 从中序与后序遍历序列构造二叉树

一、题目描述

给定两个整数数组inorderpostorder,其中inorder是二叉树的中序遍历,postorder是同一棵树的后序遍历,请你构造并返回这颗二叉树

示例 1

输入: inorder = [9, 3, 15, 20, 7], postorder = [9, 15, 7, 20, 3]
输出: [3, 9, 20, null, null, 15, 7]


Mike大约 3 分钟binary treemediumarrayhash tabledivide and conquerbinary tree
105, 从中序与先序遍历序列构造二叉树

一、题目描述

给定两个整数数组preorderinorder,其中preorder是二叉树的先序遍历inorder是同一棵树的中序遍历,请构造二叉树并返回其根节点。

示例 1

输入: preorder = [3, 9, 20, 15, 7], inorder = [9, 3, 15, 20, 7]
输出: [3, 9, 20, null, null, 15, 7]


Mike大约 3 分钟binary treemediumarrayhash tabledivide and conquerbinary tree
347, 前K个高频元素

一、题目描述

给你一个整数数组nums和一个整数k,请你返回其中出现频率前k高的元素。你可以按任意顺序返回答案。

示例 1
输入: nums = [1, 1, 1, 2, 2, 3], k = 2
输出: [1, 2]

示例 2
输入: nums = [1], k = 1
输出: [1]

提示


Mike大约 5 分钟stack/queuemediumhash tabledivide and conquersortingheap(priority queue)bucket sortcountingquick select