vivo2021提前批笔试题

全是leetcode原题
1.605.种花问题
假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
给定一个花坛(表示为一个数组包含0和1,其中0表示没种植花,1表示种植了花)返回在不打破种植规则的情况下能种入花的最大值。

1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0

关键思路:能种花的位置的前中后三个位置一定是0,否则就不能种花!!
代码

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public boolean canPlaceFlowers(int[] flowerbed, int n) {
int res = 0;
for(int i=0; i<flowerbed.length; i++){
if( flowerbed[i] == 0 && ((i-1<0) || flowerbed[i-1] == 0) && ((i+1>=flowerbed.length) || flowerbed[i+1]==0)){
flowerbed[i] = 1;
res++;
}
}
return res;
}
}

2.887.鸡蛋掉落
你将获得 K 个鸡蛋,并可以使用一栋从 1 到 N 共有 N 层楼的建筑。
每个蛋的功能都是一样的,如果一个蛋碎了,你就不能再把它掉下去。
你知道存在楼层 F ,满足 0 <= F <= N 任何从高于 F 的楼层落下的鸡蛋都会碎,从 F 楼层或比它低的楼层落下的鸡蛋都不会破。
每次移动,你可以取一个鸡蛋(如果你有完整的鸡蛋)并把它从任一楼层 X 扔下(满足 1 <= X <= N)。
你的目标是确切地知道 F 的值是多少。
无论 F 的初始值如何,你确定 F 的值的最小移动次数是多少?

这题理解起来都费劲,之前见过,可是没记下来咋做的。

  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2020 Zhang-Ke
  • Powered by Hexo Theme Ayer
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信