2025.11.17 力扣每日一题

1437.是否所有1都至少相隔k个元素

cpp 复制代码
class Solution {
public:
    bool kLengthApart(vector<int>& nums, int k) {
        // cnt:记录当前位置与上一个1之间的"间隔元素数"
        // 初始化为k:处理第一个1的情况(第一个1前面没有元素,默认满足间隔要求)
        int cnt = k;
        
        // 遍历数组的每个元素
        for (int num : nums) {
            if (num == 0) {
                // 当前是0,间隔数+1
                cnt++;
                continue; // 跳过后续逻辑,继续下一个元素
            }
            
            // 当前是1:检查与上一个1的间隔是否≥k
            if (cnt < k) {
                return false; // 间隔不足,直接返回false
            }
            
            // 重置间隔数:当前1是新的"上一个1",后续元素从0开始计数间隔
            cnt = 0;
        }
        
        // 遍历完所有元素,所有1的间隔都满足要求
        return true;
    }
};

为什么初始化为 k?

假设 cnt 初始化为 0,会出现什么问题?

当第一个元素是 1 时,代码会检查 cnt < k(即 0 < k)。如果 k ≥ 1,会直接返回 false,这显然错误(第一个 1 不需要间隔)。

而初始化为 k 时:

当第一个元素是 1 时,代码检查 cnt < k(即 k < k),结果为 false,不会误判,而是正常重置 cnt=0,开始统计与下一个 1 的间隔。

即使 k=0(允许 1 相邻),初始化为 0 也满足 cnt >= 0,逻辑依然正确。

相关推荐
alphaTao5 小时前
LeetCode 每日一题 2026/8/24-2026/8/30
python·算法·leetcode
Interview Aid1125 小时前
TikTok OA 四题分享|半小时内 AC,题目基本都是实现题
java·开发语言·算法·面试·职场和发展
顶点多余14 小时前
那些在算法中适合巩固的知识点---1
java·前端·算法
AI情绪识别开源15 小时前
检信 ALLEMOTION OS 加密打包可执行程序 — 全面测试报告版本: v1.3功能测试 / 性能测试 /
开发语言·数据结构·人工智能·功能测试
罗西的思考16 小时前
【Agentic RL / 强化学习框架】Molt 设计解读
人工智能·算法·机器学习
hahaha601616 小时前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
多弗朗皮卡丘17 小时前
算法详解4:买卖股票的最佳时机系列(上)
算法
维克兜率天19 小时前
【维克】动量指标家族:RSI、ROC、CCI、Momentum全面解析
python·算法
AI情绪识别开源20 小时前
检信 AI 智能推广平台(代号:JX-Promote)
人工智能·算法·erlang
老当益壮梁奶奶21 小时前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法