长度为 K 的子数组的能量值 Nov 6 2024 算法 0 comment ### 1. 要求 给你一个长度为 `n` 的整数数组 `nums` 和一个正整数 `k` 。 一个数组的 **能量值** 定义为: - 如果 **所有** 元素都是依次 **连续** 且 **上升** 的,那么能量值为 **最大** 的元素。 - 否则为 -1 。 你需要求出 `nums` 中所有长度为 `k` 的 子数组的能量值。 请你返回一个长度为 `n - k + 1` 的整数数组 `results` ,其中 `results[i]` 是子数组 `nums[i..(i + k - 1)]` 的能量值。 ### 2. 示例 > **输入:**nums = [1,2,3,4,3,2,5], k = 3 > > **输出:**[3,4,-1,-1,-1] > > **解释:** > > `nums` 中总共有 5 个长度为 3 的子数组: > > - `[1, 2, 3]` 中最大元素为 3 。 > - `[2, 3, 4]` 中最大元素为 4 。 > - `[3, 4, 3]` 中元素 **不是** 连续的。 > - `[4, 3, 2]` 中元素 **不是** 上升的。 > - `[3, 2, 5]` 中元素 **不是** 连续的。 ### 3. 思路 由子数组需要是连续且上升可知,此时子数组最后一个元素就是该子数组的能量值  ### 4. 代码实现 var resultsArray = function(nums, k) { let energy = []; for (let i = 0;i<=nums.length-k;i++){ let valid = true; for (let j = i+1; j < i+k; j++){ if (nums[j] - nums[j-1] !== 1){ valid = false; break; } } if (valid){ energy.push(nums[i+k-1]); } else{ energy.push(-1); } } return energy }; - **时间复杂度**:O(N*K) - **空间复杂度**:O(N) 本文由 yuin 创作,本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。