算法通关村——原来滑动窗口如此简单

news2024/11/16 3:47:00

1. 子数组最大平均数 I

最大平均数
给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
请你找出平均数最大且 长度为 k 的连续子数组,并输出该最大平均数。
任何误差小于 10-5 的答案都将被视为正确答案。
示例 1:

输入:nums = [1,12,-5,-6,50,3], k = 4
输出:12.75
解释:最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
示例 2:

输入:nums = [5], k = 1
输出:5.00000

1.1 滑动窗口

本质就是计算每个窗口内的总和,然后将每个窗口的总和进行相比,找出最大的数,然后/k就是最大平均值。每次移动的时候都需要先将之前左窗口的元素先减去,然后再添加新进来的右元素,因为并不好直接计算 k的序列里面的元素和,所以需要先算出第一个窗口的和,然后再移动窗口。
在这里插入图片描述

   public double findMaxAverage(int[] nums, int k) {
        if(k>nums.length || nums.length<1 || k<1) return 0.0;
        
        int windowSum = 0;
        // 先计算第一个窗口总和
        for(int i=0;i<k;i++){
            windowSum +=nums[i];
        }
        
        int res = windowSum;
        // 移动窗口,减去左元素,添加新的右元素
        for(int right = k;right<nums.length;right++){
            windowSum  = windowSum +nums[right]-nums[right-k];
            res = Math.max(res,windowSum);
        }

        return (double)res/k;
    }

2. 最长连续递增序列

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。

示例 1:

输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。
示例 2:

输入:nums = [2,2,2,2,2]
输出:1
解释:最长连续递增序列是 [2], 长度为1。

2.1 遍历统计递增长度

遍历数组,统计每一个递增的长度,一旦出现了前一个元素比当前元素大或者等于的情况下,当前这个递增长度就设置成1,然后等待下一次递增,只需要将这些递增结果进行比较,就能获得最长的递增长度。

    public int findLengthOfLCIS(int[] nums) {
        // 当前最长的区间长度
        int curLen = 1;
        // 结果
        int res = 1;
        for(int i = 1;i<nums.length;i++){
            // 不符合递增
            if(nums[i-1] >= nums[i]){
                curLen = 1;
            }else{
                curLen++;
            }
            res = Math.max(res,curLen);
        }

        return res;
    }

2.2 滑动窗口

需要定义两个指针,left表示滑动窗口的起始位置,right表示滑动窗口的结束位置,遍历的时候一旦遇到不是递增的情况下,left=right, 否则就是right一直右移, 然后将每一次遍历的长度进行比较,找出最长的一个。需要注意的是这个right需要大于0,否则会出现越界的情况。

   public int findLengthOfLCIS(int[] nums) {
        int left =0;
        int right = 0;
        int res = 0;
        while(right < nums.length){
            if(right >0 &&nums[right-1] >= nums[right]){
                left = right;
            }
            right++;
            res = Math.max(res,right-left);
        }
        return res;
    }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/958179.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

centos中得一些命令 记录

redis命令 链接redis数据库的命令 redis-cli如果 Redis 服务器在不同的主机或端口上运行&#xff0c;你需要提供相应的主机和端口信息。例如&#xff1a; redis-cli -h <hostname> -p <port>连接成功后&#xff0c;你将看到一个类似于以下的提示符&#xff0c;表…

基于PHP实现的计算机信息管理学院网站

《[含文档PPT源码等]精品基于PHP实现的计算机信息管理学院网站》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具&#xff1a; 操作系统&#xff1a;Windows 10、Windows 7、Windows 8 开发语言&#xff1a;php 前端技术&am…

1688商品详情 API

1688商品详情 API 1688 商品详情item_get接入测试 公共参数 名称类型必须描述keyString是调用key&#xff08;必须以GET方式拼接在URL中&#xff09;secretString是调用密钥api_nameString是API接口名称&#xff08;包括在请求地址中&#xff09;[item_search,item_get,item_…

【Sword系列】Vulnhub靶机HACKADEMIC: RTB1 writeup

靶机介绍 官方下载地址&#xff1a;https://www.vulnhub.com/entry/hackademic-rtb1,17/ 需要读取靶机的root目录下key.txt 运行环境&#xff1a; 虚拟机网络设置的是NAT模式 靶机&#xff1a;IP地址&#xff1a;192.168.233.131 攻击机&#xff1a;kali linux&#xff0c;IP地…

ArcGIS Enterprise + ArcGIS Pro 常用服务类型发布

发布前设置 门户连接 首先Pro需要先连接portal 添加portal门户地址&#xff0c;注意只到WA一级地址&#xff0c;并登录&#xff1a; 登录完成后&#xff0c;右键&#xff0c;设置为活动门户&#xff1a; 1. 发布动态地图服务 关联数据文件夹&#xff1a; 拖拽数据到地图…

Fiddler安装与使用教程(1) —— 软测大玩家

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

【附安装包】Stata16安装教程

软件下载 软件&#xff1a;Stata版本&#xff1a;16语言&#xff1a;简体中文大小&#xff1a;338.13M安装环境&#xff1a;Win11/Win10/Win8/Win7硬件要求&#xff1a;CPU2.0GHz 内存4G(或更高&#xff09;下载通道①百度网盘丨下载链接&#xff1a;https://pan.baidu.com/s/…

骨传导耳机弊端有哪些?用骨传导耳机有好处吗?

其实任何一款耳机都有它的好处和弊端&#xff0c;最近火热的骨传导耳机也不例外&#xff0c;“骨传导”其实就是让我们能够听到声音的传播方式之一&#xff0c;它通过人体的下颚骨传到耳蜗&#xff0c;并激动到耳蜗中的听觉毛细胞&#xff0c;从而产生电子信号&#xff0c;让我…

C++信息学奥赛1180:分数线划定

#include <bits/stdc.h> using namespace std; int main() {int n, a;cin >> n >> a; // 输入 n 和 aint id[n], arr[n]; // 定义两个长度为 n 的数组 id 和 arr&#xff0c;用于存储输入的数据for (int i 0; i < n; i){cin >> id[i] >> arr…

丰台区北宫镇举办“丰宜福台·书香北宫”2023年书画交流活动

2023年8月30日&#xff0c;北京市丰台区北宫镇举办了一场盛大的书画交流活动&#xff0c;以“丰宜福台书香北宫”为主题&#xff0c;展示书画艺术魅力&#xff0c;共建文化新北宫。此次活动旨在传承和弘扬中国书法与国画的古韵文化&#xff0c;丰富北宫镇民众的精神文化生活&am…

【Linux】redhat7.8配置yum在线源【redhat7.8镜像容器内配置yum在线源】通用

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

【UE 材质】实现方形渐变、中心渐变材质

步骤 一、实现方形渐变 1. 新建一个材质&#xff0c;材质域选择“后期处理” 2. 通过“Mask”节点单独获取R、G通道&#xff0c;可以看到R通道是从左到右0~1之间的变化&#xff0c;对应U平铺 可以看到G通道是从上到下0~1之间的变化&#xff0c;对应V平铺 3. 完善如下节点 二、…

【力扣每日一题】2023.8.31 一个图中连通三元组的最小度数

目录 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 代码&#xff1a; 题目&#xff1a; 示例&#xff1a; 分析&#xff1a; 题目给我们一个无向图&#xff0c;要我们找出三个节点&#xff0c;这三个节点他们两两相连&#xff0c;这三个节点除了连接到对方的其他线…

阻塞非阻塞IO(BIO和NIO),IO多路复用

1.概念 NIO&#xff08;New Input/Output&#xff09;和BIO&#xff08;Blocking Input/Output&#xff09;是Java中用于处理输入输出的两种不同的模型。 BIO 会阻塞&#xff0c;等有了消息&#xff0c;立刻返回&#xff0c;一个线程处理一个recv&#xff08;需要很多线程&…

Solidity 小白教程:5. 变量数据存储和作用域 storage_memory_calldata

Solidity 小白教程&#xff1a;5. 变量数据存储和作用域 storage_memory_calldata Solidity 中的引用类型 引用类型(Reference Type)&#xff1a;包括数组&#xff08;array&#xff09;&#xff0c;结构体&#xff08;struct&#xff09;和映射&#xff08;mapping&#xff…

用迅为RK3568开发板使用OpenCV处理图像颜色通道提取ROI

本小节代码在配套资料“iTOP-3568 开发板\03_【iTOP-RK3568 开发板】指南教程 \04_OpenCV 开发配套资料\07”目录下&#xff0c;如下图所示&#xff1a; 在计算机的色彩图像中存有三个通道&#xff0c;即 BGR 通道&#xff0c;根据三个颜色通道的亮度值来显示出不同的颜色&…

动态相对定位差分关键技术

载波相位测量&#xff1a;解决两个关键问题&#xff0c;即整周模糊度计算和周跳检测。 整周模糊度的快速固定是研究重点。目前成熟方法是模糊度协方差法&#xff0c;分为模糊度实数解估计和模糊度搜索两个过程。实数解估计通常采用kalman滤波&#xff0c;它为搜索算法提供搜索…

哈希表HashMap(基于vector和list)

C数据结构与算法实现&#xff08;目录&#xff09; 1 什么是HashMap&#xff1f; 我们这里要实现的HashMap接口不会超过标准库的版本&#xff08;是一个子集&#xff09;。 HashMap是一种键值对容器&#xff08;关联容器&#xff09;&#xff0c;又叫字典。 和其他容易一样…

【Vue3 知识第一讲】Vue 简介、核心关键词解读

文章目录 前置导读1. 学习 Vue3 需要什么知识&#xff1f;2. 通过本课程将能学到什么&#xff1f; 第一章&#xff1a;Vue 简介1.1 核心关键词&#xff1a;构建用户界面1.2 核心关键词&#xff1a;框架1.2.1 库和框架的区别1.2.2 Vue 框架 1.3 核心关键词&#xff1a;渐进式&am…

CTFhub-SSRF-内网访问

CTFHub 环境实例 | 提示信息 http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url_ 根据提示&#xff0c;在url 后门添加 127.0.0.1/flag.php http://challenge-8bf41c5c86a8c5f4.sandbox.ctfhub.com:10800/?url127.0.0.1/flag.php ctfhub{a6bb51530c8f6be0…