Alice 管理着一家公司,并租用大楼的部分楼层作为办公空间。Alice 决定将一些楼层作为 特殊楼层 ,仅用于放松。
给你两个整数 bottom 和 top ,表示 Alice 租用了从 bottom 到 top(含 bottom 和 top
在内)的所有楼层。另给你一个整数数组 special ,其中 special[i] 表示 Alice 指定用于放松的特殊楼层。返回不含特殊楼层的 最大 连续楼层数。
示例 1:
输入:bottom = 2, top = 9, special = [4,6] 输出:3 解释:下面列出的是不含特殊楼层的连续楼层范围:
- (2, 3) ,楼层数为 2 。
- (5, 5) ,楼层数为 1 。
- (7, 9) ,楼层数为 3 。 因此,返回最大连续楼层数 3 。 示例 2:
输入:bottom = 6, top = 8, special = [7,6,8] 输出:0 解释:每层楼都被规划为特殊楼层,所以返回 0
。
这个题目看起来比较简单,其实只需要计算首层、特殊楼层、顶层之间的间隔,就可以得出间隔最大的连续楼层数了。
class Solution {
public int maxConsecutive(int bottom, int top, int[] special) {
Arrays.sort(special); //将特殊楼层排序
int n = special.length; //获取特殊楼层长度
int ans = Math.max(special[0] - bottom, top - special[n - 1]); //检查首层和第一个特殊楼层和尾层最后一层的最大值差
for (int i = 1; i < n; i++) {
ans = Math.max(ans, special[i] - special[i - 1] - 1);
} //每两层作差检查
return ans; //返回最大差值
}
3 条评论
瑕不掩瑜,稍加打磨必成佳作。
文化差异分析可再深化以避免误读。
立意高远,以小见大,引发读者对社会/人性的深层共鸣。