🌓

卡车装箱问题。你有一辆卡车和一个货物清单(2D 数组),货物清单每个项目列出了这种货物的数量和每个货物所占的容量。

你需要求出给定尺寸的卡车最多能装下多少个货物。这道题运用贪心算法。

阅读全文 »

跳跃游戏问题。你有一个数组 nums 和一个步数 k,最初你站在 0 的位置。游戏每一回合你可以向前跳最多 k 步,你的得分就是向前跳的步数对于 nums 中的值。求你可以获得的最大得分。

阅读全文 »

有一个正整数数组 nums,你需要找到一个不存在重复元素的子数组,子数组的值之和是你获得的分数。求你可以获得的最大分数。这道题可以运用滑动窗口来解决。

阅读全文 »

给定一个字符串格式的十进制整数 n,要求你分析最少需要多少个“二进制式十进制数”(Deci-Binary)求和可以得到这个给定的数 n

“二进制式十进制数”的定义:一个十进制的整数,并且每一位数都只能是 01,不能有前置 0。比如 1011100 符合要求,但是 1123001 不符合要求。

这道题确定不是脑筋急转弯吗?!

阅读全文 »

爬楼游戏。给你一个数组 heights 表示你面前的大楼的高度,你从 0 出发,你有一些砖块的梯子。当你从当前位置爬到下一个位置时需要满足下面的条件。

  • 如果当前楼层高度大于或等于下一个大楼的高度,你可以直接过去,不需要使用砖块或梯子;
  • 如果当前楼岑高度小于下一个大楼的高度,你可以选择使用 1 个梯子,或者两栋楼高度差数量的砖块过去。

重点在于梯子可以爬任意高度,砖块则需要消耗高度差的数量。求你可以到达的最远距离。贪心算法和优先队列可以解决这个问题。

阅读全文 »

求动态和,也就是前缀和。让你熟悉一下什么是前缀和。

给定一个数组,根据下标遍历,将每个位置 n 的值更新为原数组位置 0n 的和。

连续几天 Hard 题目突然蹦出来一道 Easy 还有点不适应,提交之前都在想肯定没这么简单,有那里没考虑到,结果就 Accepted 了。

阅读全文 »

切蛋糕问题。给你一个尺寸为 h x w 的矩形蛋糕,还有两个数组 horizontalCutsverticalCuts 分别表示水平方式切的位置和垂直方向切的位置。

  • 水平切面的值从蛋糕的最上边开始计算;
  • 相同的,垂直切面的值从蛋糕的最左边开始计算。

求蛋糕切分之后的单块蛋糕的最大面积。因为结果可能是一个很大的数字,将其和 109 + 7 取模之和作为答案返回。

实际上是求两个数组的最大差之积,需要考虑的细节是四条边的值不在数组中,如果漏掉它们将不能得到正确答案。

阅读全文 »

抽卡求最大得分问题。有一堆卡排成一行,每张卡的卡面有其对应的分值,你有 k 次机会抽取卡片,每次机会中你可以选择抽取最左边的一张卡,或者抽取最右边的一张卡。你所抽取的所有卡片的分值之和是你的得分。求你能获得的最大分数。

阅读全文 »

你需要从 n 个工程师中选择最多 k 位构成一个小组,并保证获得最好的绩效表现。

你有两个数组 speedefficiency 分别表示每个工程师的速度和效率。

小组的绩效表现计算方法:小组所有成员的速度之和乘以小组成员效率的最小值。由于结果数组可能会非常大,将结果和 10^9 + 7 取模作为答案返回。

工程师的速度和效率是捆绑的,所以要知道答案,我们只能尝试将每一位工程师编入小组,可以使用贪心算法解决问题。

阅读全文 »

构建目标数组问题。给你一个长度为 n 的目标数组 target,你需要从一个包含 n1 的数组 arr 开始执行下面的过程:

  • 设当前的 arr 数组的和为 x
  • 选择 0n 之间的一个下标 i,让 arr[i] 等于 x
  • 重复这个过程。

判断最终能否构建出目标数组。

阅读全文 »