前言
老三样如约而至。。。。
检查是否所有 A 都在 B 之前
1 | 给你一个 仅 由字符 'a' 和 'b' 组成的字符串 s 。如果字符串中 每个 'a' 都出现在 每个 'b' 之前,返回 true ;否则,返回 false 。 |
1 | 输入:s = "aaabbb" |
1 | 输入:s = "abab" |
1 | 输入:s = "bbb" |
There’s nothing to say,第一道题面前重拳出击!🐶
1 | class Solution(object): |
银行中的激光束数量
1 | 银行内部的防盗安全装置已经激活。给你一个下标从 0 开始的二进制字符串数组 bank ,表示银行的平面图,这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布,由若干 '0' 和若干 '1' 组成。'0' 表示单元格是空的,而 '1' 表示单元格有一个安全设备。 |
1 | 输入:bank = ["011001","000000","010100","001000"] |
1 | 输入:bank = ["000","111","000"] |
这道题的思路就是交叉相成,看成一个多行的数组,每一行的1的个数乘其他行1的个数。前提是两行之前能相乘的原则是中间行1的个数都为0。
1 | class Solution(object): |
摧毁小行星
1 | 给你一个整数 mass ,它表示一颗行星的初始质量。再给你一个整数数组 asteroids ,其中 asteroids[i] 是第 i 颗小行星的质量。 |
1 | 输入:mass = 10, asteroids = [3,9,19,5,21] |
1 | 输入:mass = 5, asteroids = [4,9,23,4] |
这道题我们使用贪心的做法,每次撞击行星的时候总是从最小的那个撞起。因此质量肯定可以累加。这里我们不用从最小的开始撞,从不超过mass值的最大值开始向后计算。因此我们首先需要对asteroids进行排序,找到初始mass应该插入的位置。如果插入位置为0的话,则证明初始mass的值不足以撞击任何行星,直接返回false即可。如果插入位置不为0,则依次向后判断,更新mass的值。
1 | class Solution(object): |
参加会议的最多员工数
1 | 一个公司准备组织一场会议,邀请名单上有 n 位员工。公司准备了一张 圆形 的桌子,可以坐下 任意数目 的员工。 |
1 | 输入:favorite = [2,2,1,2] |
1 | 输入:favorite = [1,2,0] |
1 | 输入:favorite = [3,0,1,4,1] |
一脸懵逼,等一手题解