leetcode-验证二叉搜索树

验证二叉搜索树(难度:中等)

给定一个二叉树,判断其是否是一个有效的二叉搜索树。

假设一个二叉搜索树具有如下特征:

  • 节点的左子树只包含小于当前节点的数。
  • 节点的右子树只包含大于当前节点的数。
  • 所有左子树和右子树自身必须也是二叉搜索树。

    这道题首先结合二叉树的普遍解题步骤可以立刻想到借用递归,从根节点开始向下遍历,过程中维护一个区间【a,b】,那么对于当前节点的左子树,要满足所有节点的值在【a,当前节点值】之间,当前节点的右子树,要满足所有节点的值在【当前节点值,b】之间。在遍历过程中不断更新这个区间即可
阅读更多...

2020春招面经

在写这篇博客的前一天,我终于收到了整个春招第一份(也许是唯一一份offer),回顾整个春招的辛酸历程,用一篇博客简单记录一下吧

这一次的春招可以说是自己第一次以应聘者的身份对职场进行一次小小的摸索,大大小小的公司都投递了一些,投递的公司职位和时间如下:

阅读更多...

leetcode-鸡蛋掉落

鸡蛋掉落(难度:困难)

你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。

每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再使用它,否则可以继续丢,鸡蛋的性能不会随着丢的次数增加而有所损耗。

假设存在一个中间楼层F,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。

每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。

你的目标是确切地知道 F 的值是多少。

无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少?

示例 1:

输入:K = 1, N = 2
输出:2
解释:
鸡蛋从 1 楼掉落。如果它碎了,我们肯定知道 F = 0 。
否则,鸡蛋从 2 楼掉落。如果它碎了,我们肯定知道 F = 1 。
如果它没碎,那么我们肯定知道 F = 2 。
因此,在最坏的情况下我们需要移动 2 次以确定 F 是多少。

示例 2:

输入:K = 2, N = 6
输出:3

示例 3:

输入:K = 3, N = 14
输出:4

阅读更多...

leetcode-打家劫舍

打家劫舍(难度:简单)

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。

给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。

示例 1:

输入: [1,2,3,1]
输出: 4
解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。
偷窃到的最高金额 = 1 + 3 = 4 。

示例 2:

输入: [2,7,9,3,1]
输出: 12
解释: 偷窃 1 号房屋 (金额 = 2), 偷窃 3 号房屋 (金额 = 9),接着偷窃 5 号房屋 (金额 = 1)。
偷窃到的最高金额 = 2 + 9 + 1 = 12 。

阅读更多...

leetcode-括号生成

括号生成(难度:中等)

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

输入:n = 3
输出:[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]

这道题的比较好的解法就是深搜+回溯的算法。我们设置一个path用于保存路径,那么递归的终点就显而易见了:当path的长度为n的两倍,那么这个时候就代表已经找出了一条符合要求的解,直接保存下来就可以了。

当path长度小于n的两倍,说明还可以往里面放括号,这个时候有两种情况,左括号的数量小于n,说明这个时候还可以继续放左括号。第二种情况,右括号的数量小于左括号的数量,说明这个时候可以放右括号。需要注意的是,这两种情况不是互斥的,而是需要顺序执行

那么我们就可以对放左括号和右括号进行递归,为了实现回溯,我们每一次递归完,都需要回退当前情况下的path和左右括号的放置情况

阅读更多...

leetcode-田忌赛马

田忌赛马(难度:中等)

给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。

返回 A 的任意排列,使其相对于 B 的优势最大化。

示例 1:

输入:A = [2,7,11,15], B = [1,10,4,11]
输出:[2,11,7,15]

示例 2:

输入:A = [12,24,8,32], B = [13,25,32,11]
输出:[24,32,8,12]

这道题是一个很经典的贪心算法题,其核心思想也很简单:

阅读更多...
  • Copyrights © 2015-2021 AURORA_ZXH
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信