当前位置: 首页 > article >正文

【LeetCode】每日一题 2024_11_6 长度为 K 的子数组的能量值 I(模拟、一次遍历)

前言

每天和你一起刷 LeetCode 每日一题~

LeetCode 启动!

题目:长度为 K 的子数组的能量值 I

明天的题目:长度为 K 的子数组的能量值 II 和本题一模一样,只是数据范围更大,所以明天可能就没有题解更新了~

代码与解题思路

先读题:题目讲的非常清晰,需要找到长度为 k 的子数组的能量值,且子数组的所有 元素都是依次 连续 且 上升 的,能量值为子数组的 最大 元素,否则能量值就是 -1

看一眼其实就能想到,直接用双层 for 循环暴力就能解题,一般来说我会先用暴力做一做,不过这次就懒得写暴力了(一般在没有思路的情况下我会先暴力热热身)

核心思路:

当子数组是连续且递增的时候,累加 cnt,当 cnt >= k 时更新能量值,能量值默认为 -1,而当子数组不符合要求时,重置 cnt,重新计数。代码如下:

func resultsArray(nums []int, k int) []int {
    ans, cnt := make([]int, len(nums)-k+1), 0
    // 否则为 -1
    for i := range ans {
        ans[i] = -1
    }
    for i, v := range nums {
        // 如果 所有 元素都是依次 连续 且 上升 的,那么能量值为 最大 的元素
        if i == 0 || nums[i-1]+1 == v {
            cnt += 1
        } else {
            cnt = 1
        }
        // 求出 nums 中所有长度为 k 的 子数组 的能量值
        if cnt >= k {
            ans[i-k+1] = v
        }
    }
    return ans
}

(注意:连续的意思是:当前元素和上一个元素的差值是 1,像:1,2,3,4,5 . . . 这种就是连续)

每天进步一点点,我们明天不见不散~

可以和我刷一辈子的每日一题吗?
一题一题,积累起来就是一辈子。


http://www.kler.cn/a/383033.html

相关文章:

  • 代码随想录算法训练营Day.3| 移除链表元素 设计链表 反转链表
  • 关于路由笔记
  • mac上的一些实用工具
  • Caffeine 手动策略缓存 put() 方法源码解析
  • GitHub个人主页美化
  • GPIO子系统中Controller驱动源码分析
  • 数智化实践案例 | 高质数据、领先平台、报告加速,赋能决策
  • 个人域名备案实操教程
  • go实现并发安全hashtable 拉链法
  • 实现自动化数据抓取:使用Node.js操控鼠标点击与位置坐标
  • MySQL 5.x和8.0有什么区别?
  • 十、快速入门go语言之方法
  • linux tar 打包为多个文件
  • 第J9周:Inception v3算法实战与解析(pytorch版)
  • MySQL的sql练习,适合初学者
  • 共同探索未来科技新境界 冠捷科技集团及腾讯云AI智能战略合作签约会
  • 开源的 API 学习平台「GitHub 热点速览」
  • 全面解析:网络协议及其应用
  • asp.net文件防盗链
  • 理解spring中的AOP
  • git 提交代码流程
  • 递归 != 递龟
  • 和合共赢 丨 广州探迹科技有限公司与泰迪智能科技战略合作签约仪式圆满结束
  • Redis常见面试题(二)
  • 蓝牙协议的前世今生
  • 猫用空气净化器哪个牌子好?求除毛好、噪音小的宠物空气净化器!