请问LeetCode 162中代码nums[-1] = nums[n] = -∞的含义是什么?
LeetCode 162题
nums[-1] = nums[n] = -∞代码含义解释 这是该题题解中常见的逻辑约定写法,并非实际可直接运行的代码,作用是简化峰值判定的边界处理逻辑,具体含义如下:
- 本题的峰值元素定义为严格大于左右相邻元素的元素,题目规则默认数组边界外的元素值为负无穷(-∞):数组第一个元素只要大于第二个元素即可判定为峰值(左侧无元素,默认比-∞大);数组最后一个元素只要大于倒数第二个元素即可判定为峰值(右侧无元素,默认比-∞大)。
- 代码中的
n指代数组nums的总长度,这行写法是约定逻辑上下标为-1的位置(首元素的左邻居)、下标为n的位置(尾元素的右邻居)的值均为-∞。 - 加入该逻辑约定后,所有位置的峰值判定规则可以完全统一,无需为首尾元素单独写分支判断,直接套用
nums[i] > nums[i-1] && nums[i] > nums[i+1]的规则即可。 - 实际编码时不能直接写这行代码操作数组越界位置,否则会触发越界报错,通常的实现方式是在判断相邻元素值时增加边界判断:如果当前遍历下标是0,左值直接取-∞;如果当前遍历下标是n-1,右值直接取-∞,最终效果和该逻辑约定完全一致。
内容的提问来源于stack exchange,提问作者Linda Lu
相关产品推荐
相关产品推荐

