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

【数组】长度最小数组

https://leetcode.cn/problems/minimum-size-subarray-sum/

方法:滑动窗口

暴力(RE)

runtime error
时间复杂度过高

传统的暴力,即两层for,第一层遍历数组每个元素,第二个从该下标开始计算sum,sum >= target 即是一个result,然后进行比较,找到最小的那个result

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int min = Integer.MAX_VALUE;
        boolean flag = false;
        for(int i = 0; i < nums.length; i++) {
            int result = 0;
            for(int j = i; j < nums.length; j++) {
                result+=nums[j];
                if(result >= target) {
                    flag = true;
                    min = Math.min(min, j - i+1);
                    break;
                } 
            }
        }
        if (flag) {
            return min;
        }
        return 0;
    }
}

但是这个方法时间复杂度太高:
在这里插入图片描述

滑动窗口

使用两个指针 i 和 j,其中:
i:起始位置
j:结束位置

class Solution {
    public int minSubArrayLen(int target, int[] nums) {
        int i = 0;  // 起始
        int result = Integer.MAX_VALUE;
        int sum = 0;
        for(int j = 0; j < nums.length; j++) {
            sum += nums[j];
            while(sum >= target) {
                result = Math.min(result, j - i + 1);
                sum -= nums[i++];
            }
        }
        return result == Integer.MAX_VALUE ? 0 : result;
    }
}

相关文章:

  • 【机器学习】从回声定位到优化引擎:蝙蝠算法在SVR超参数优化中的应用
  • 重学Java基础篇—线程池参数优化指南
  • Joomla教程—查看网站的前台页面与菜单管理(栏目管理)
  • 攻破tensorflow,勇创最佳agent(2)---损失(loss) 准确率(accuracy)问题
  • 数据清洗:基于python抽取jsonl文件数据字段
  • 【C++11】智能指针:std::shared_ptr
  • FPGA设计中IOB约束
  • 【杂记四】刚体运动 +SE(3)
  • 【深度学习基础 1】 TensorFlow 框架
  • 插值法笔记 ——武汉理工统计 周
  • STM32 ADC和DAC详解
  • 使用 HBuilder 打包 ruoyi-mall-uniapp 并在微信开发者工具中模拟运行的教程
  • 第二章:影响优化的计算机行为_《C++性能优化指南》notes
  • Elasticsearch DSL查询语法
  • ES 字段的映射定义了字段的类型及其行为
  • 142. 环形链表 II——考察数学,难!
  • k8s存储介绍(二)Secret
  • 【AI News | 20250325】每日AI进展
  • 救生滚钩,高效救援的多功能生命守护者|鼎跃安全
  • 详解图卷积网络
  • 建网站的公司起什么名好/设计本网站
  • 做网赌网站怎么推广拉人/友链
  • 建设的比较好的网站/巨量引擎广告投放平台登录入口
  • 手机网站制作织梦网站模板/seo是什么?
  • 网站做海外的防护/百度域名购买
  • 怎么做卖卷网站/如何进行网站推广