力扣 第 137 场双周赛

力扣 第 137 场双周赛 3254. 长度为 K 的子数组的能量值 I给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为 如果 所有 元素都是依次 连续 且 上升 的那么能量值为 最大 的元素。 否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n - k 1 的整数数组 results 其中 results[i] 是子数组 nums[i..(i k - 1)] 的能量值。 示例 1 输入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] 中元素 不是 连续的。 示例 2 输入nums [2,2,2,2,2], k 4 输出[-1,-1] 示例 3 输入nums [3,2,3,2,3,2], k 2 输出[-1,3,-1,3,-1] 提示 1 n nums.length 500 1 nums[i] 105 1 k n分析问题用前缀和解决问题s[i]表示字符串0-i中有几位是连续上升的其中只有连续上升的位置才会置1否则置0。classSolution{public:vectorintresultsArray(vectorintnums,intk){intnnums.size();vectorints{0},ans;for(inti1;in;i){if(nums[i]-nums[i-1]1)s.push_back(1s[i-1]);elses.push_back(s[i-1]);}for(inti0;in-k1;i){if(s[ik-1]-s[i]k-1)ans.push_back(nums[ik-1]);elseans.push_back(-1);}returnans;}};3256.放三个车的价值之和最大 I 显示英文描述通过的用户数360 尝试过的用户数942 用户总通过次数522 用户总提交次数3488 题目难度Hard 给你一个 m x n 的二维整数数组 board 它表示一个国际象棋棋盘其中 board[i][j] 表示格子 (i, j) 的 价值 。 处于 同一行 或者 同一列 车会互相 攻击 。你需要在棋盘上放三个车确保它们两两之间都 无法互相攻击 。 请你返回满足上述条件下三个车所在格子 值 之和 最大 为多少。 示例 1 输入board [[-3,1,1,1],[-3,1,-3,1],[-3,2,1,1]] 输出4 解释 我们可以将车分别放在格子 (0, 2) (1, 3) 和 (2, 1) 处价值之和为 1 1 2 4 。 示例 2 输入board [[1,2,3],[4,5,6],[7,8,9]] 输出15 解释 我们可以将车分别放在格子 (0, 0) (1, 1) 和 (2, 2) 处价值之和为 1 5 9 15 。 示例 3 输入board [[1,1,1],[1,1,1],[1,1,1]] 输出3 解释 我们可以将车分别放在格子 (0, 2) (1, 1) 和 (2, 0) 处价值之和为 1 1 1 3 。 提示 3 m board.length 100 3 n board[i].length 100 -109 board[i][j] 109