力扣 第 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。
java 复制代码
class Solution {
public:
    vector<int> resultsArray(vector<int>& nums, int k) {
        int n = nums.size();
        vector<int> s = {0}, ans;
        for (int i = 1; i < n; i++) {
            if (nums[i] - nums[i-1] == 1) s.push_back(1 + s[i-1]);
            else s.push_back(s[i-1]);
        }
        for (int i = 0;  i < n - k + 1; i++) {
            if (s[i + k -1] - s[i] == k-1) ans.push_back(nums[i+k-1]);
            else ans.push_back(-1);
        }
        return ans;
    }
};

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
相关推荐
颜酱1 小时前
图的数据结构:从「多叉树」到存储与遍历
javascript·后端·算法
saltymilk6 小时前
使用 C++ 模拟 ShaderLanguage 的 swizzle
c++·模板元编程
zone77396 小时前
006:RAG 入门-面试官问你,RAG 为什么要切块?
后端·算法·面试
CoovallyAIHub9 小时前
OpenClaw 近 2000 个 Skills,为什么没有一个好用的视觉检测工具?
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
CVPR 2026 | 用一句话告诉 AI 分割什么——MedCLIPSeg 让医学图像分割不再需要海量标注
深度学习·算法·计算机视觉
CoovallyAIHub9 小时前
Claude Code 突然变成了 66 个专家?这个 5.8k Star 的开源项目,让我重新理解了什么叫"会用 AI"
深度学习·算法·计算机视觉
兆子龙9 小时前
前端哨兵模式(Sentinel Pattern):优雅实现无限滚动加载
前端·javascript·算法
xlp666hub12 小时前
Leetcode第五题:用C++解决盛最多水的容器问题
linux·c++·leetcode
CoovallyAIHub13 小时前
9个视觉语言模型工厂实测:Qwen 87.9%碾压全场,你的显卡能跑哪个?
算法
SparkX开源AI知识库14 小时前
手摸手带你安装OpenClaw并对接飞书
算法·架构