滑动窗口系列(定长滑动窗口长度) 8/30

1.所有数对中 数位差之和()

题意:

给定一个nums数组,计算中所有整数数对中 数位差的个数之和;

数位差:某一位上的数字不一样就记作数位差。

eg:12 22; 十位上不一样,数位差为1

思路:

首先计算出一个数字有多少位(题目中给出所有数字的位数都相同这个条件)

然后统计每一位上0-9的个数

最后就可以计算出数位差的个数。

比如说:个位等于0有x个,那么不等于0就有nums.size - x 个,那么数位差就有x*(nums.size-x)/2个

以此类推先计算个位上的。然后计算十位上的...

代码:
class Solution {public long sumDigitDifferences(int[] nums) {//nums中整数都有相同的长度long res=0;int size=nums.length;int[][] cnt=new int[Integer.toString(nums[0]).length()][10];for(int num:nums){int index=0;while(num>0){cnt[index++][num%10]++;num/=10;}}for(int i=0;i<cnt.length;i++){for(int j=0;j<10;j++){res+=(long)cnt[i][j]*(size-cnt[i][j]);}}return res>>1;}
}

2.定长子串中原因的最大数目

给你字符串 s 和整数 k 。

请返回字符串 s 中长度为 k 的单个子字符串中可能包含的最大元音字母数。

英文中的 元音字母 为(aeiou)。

思路:

1.对字符串中的字符循环,判断是不是元音字母;如果是的话,元音字母数量+1;

2.此时判断滑动窗口的长度是否等于k

   2.1 如果等于 就要判断s.charAt(left)是否是元音字母 如果是的话 数量-1;

   2.2  如果小于 继续循环

3.right++,窗口继续往右扩展

代码:
class Solution {public int maxVowels(String s, int k) {int left = 0;int right = 0;int res = 0;int amount = 0;while (right < s.length()) {char ch = s.charAt(right);if (isYy(ch)) amount++;if (right - left + 1 == k) {res = Math.max(res, amount);if (isYy(s.charAt(left)))amount -= 1;left++;}right++;}return res;}public boolean isYy(char ch) {if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u')return true;return false;}
}

3.大小为K且平均值大于等于阈值的子数组数目

给你一个整数数组 arr 和两个整数 k 和 threshold 。

请你返回长度为 k 且平均值大于等于 threshold 的子数组数目。

思路:

对数组遍历循环,当窗口的长度==k的时候,判断平均值是否大于等于阈值,如果大于等于res++;然后left++,num-=nums[left]

代码:
class Solution {public int numOfSubarrays(int[] arr, int k, int threshold) {int res = 0;int left = 0;int right = 0;int sum = 0;while (right < arr.length) {sum += arr[right];if (right - left + 1 == k) {if (sum >= threshold * k) {res++;}sum -= arr[left];left++;}right++;}return res;}
}

4.拆炸弹

题意:

你有一个炸弹需要拆除,时间紧迫!你的情报员会给你一个长度为 n 的 循环 数组 code 以及一个密钥 k 。

如果k>0,数组中下标为index的值为后k位数字(>nums.length-1就返前来)的和;

如果k=0,数组中的值都为0;

如果k<0,数组中下标为index的值为前k位数字(<0折后去)的和

思路:

仍然使用固定长度的滑动窗口的思路;

首先对K进行判断,有三种情况;

k>0,开始进行循环遍历数组中的每一个数字,当right-left+1==k或者right+len-left+1==k的时候,res[(left-1)%k]==sum,循环的条件为index<nums.length+k-1(要使数组上每一个位置都有新的和)

k<0,同理

代码:
class Solution {public int[] decrypt(int[] code, int k) {int[] res=new int[code.length];int len=code.length;int left=0;int right=0;int sum=0;int index=0;if(k==0)return res;else if(k>0){while(index<code.length+k-1){sum+=code[right];System.out.println(sum);if(right-left+1==k||right+len-left+1==k){res[(left-1+len)%len]=sum;sum-=code[left%len];left=(left+1)%len;}right=(right+1)%len;index++;}}else{k=-k;while(index<code.length+k-1){sum+=code[right];System.out.println(sum);if(right-left+1==k||right+len-left+1==k){res[(right+1)%len]=sum;sum-=code[left];left=(left+1)%len;}right=(right+1)%len;index++;}}return res;}
}

模版:

class Solution {public int numOfSubarrays(int[] arr, int k, int threshold) {int res = 0;int left = 0;int right = 0;int sum = 0;while (right < arr.length) {//1. 根据题目中的要求来计算xxxxxxxx//2. 此时判断窗口的大小是否等于题目中要求的if (right - left + 1 == 窗口长度大小) {if (条件) {res++;}//3.窗口左边的边界移动sum -= arr[left];left++;}//4. 窗口右边的边界移动right++;}return res;}
}

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

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

相关文章

Linux信号处理机制基础

什么是信号 信号在最早的UNIX系统中即被引入&#xff0c;已有30多年的历史&#xff0c;但只有很小的变化。信号是提供异步事件处理机制的软件中断。进程之间可以相互发送信号&#xff0c;这使信号成为一种进程间通信(Inter-ProcessCommunication,lPC)的基本手段 信号的名称与…

splunk Enterprise 的HTTP收集器-windows

1.创建HTTP收集器 2.使用HTTP收集器 然后打开全局设置&#xff1a;把ssl给去掉&#xff0c;点保存&#xff08;保存之后&#xff0c;可以看到这些状态全部都是已启用了&#xff09;&#xff1a; 3.测试&#xff1a; curl --location --request POST http://192.168.11.131:808…

【自动驾驶】决策规划算法概述

写在前面&#xff1a; &#x1f31f; 欢迎光临 清流君 的博客小天地&#xff0c;这里是我分享技术与心得的温馨角落。&#x1f4dd; 个人主页&#xff1a;清流君_CSDN博客&#xff0c;期待与您一同探索 移动机器人 领域的无限可能。 &#x1f50d; 本文系 清流君 原创之作&…

卷积神经网络(CNN):算法、原理与应用

卷积神经网络&#xff08;Convolutional Neural Networks, CNN&#xff09;是深度学习领域中的重要算法之一&#xff0c;尤其在计算机视觉任务中表现出色。本文将从基础原理、核心组件、以及应用场景三个方面理解卷积神经网络的强大之处。 卷积神经网络的基本概念 卷积神经网…

u盘pe怎么安装系统_u盘pe安装系统详细步骤

u盘pe怎么安装系统&#xff1f;u盘pe安装系统需要准备一个u盘&#xff0c;然后将u盘制作成pe&#xff0c;进入pe后再安装系统&#xff0c;下面小编就教大家u盘pe安装系统详细步骤教程。 u盘pe启动盘是什么&#xff1f; u盘pe启动盘是一种可引导的USB存储设备&#xff0c;其中包…

10:Logic软件原理图中添加电源与GND

Logic软件原理图中添加电源与GND

Hive的存储格式

文章目录 Hive的存储格式1.存储格式简介2.行存储与列存储行式存储列式存储混合的 PAX 存储结构 TextFileSequenceFile Hive的存储格式 1.存储格式简介 Hive支持的存储数的格式主要有&#xff1a;TEXTFILE(默认格式) 、SEQUENCEFILE、RCFILE、ORCFILE、PARQUET。 textfile为默…

续:docker 仓库数据传输加密

上一个实验&#xff1a;非加密的形式在企业中是不被允许的。 示例&#xff1a;【为Registry 提供加密传输】 因为传输也是https&#xff0c;所以与ssh一样的加密。 ## 这种方式就不用写这个了。 [rootdocker ~]# cat /etc/docker/daemon.json #{ # "insecure-registrie…

7个流行的开源数据治理工具

数字化时代&#xff0c;数据是已经成为最宝贵的资产之一。数据支撑着我们的政府、企业以及各类组织的所有流程&#xff0c;并为决策以及智能化服务提供支撑。大数据有大用途&#xff0c;但是也可能隐藏着巨大的风险&#xff0c;特别是如果我们对数据的情况不是很了解的时候&…

计算机组成原理:实验四常规型微程序控制器组成实验

一、实验目的 1.掌握时序产生器的组成原理。 2.掌握微程序控制器的组成原理。 3.掌握微指令格式的化简和归并。 二、实验电路 1.时序发生器 TEC-4计算机组成原理实验系统的时序电路如图4.1所示。电路采用2片GAL22V10&#xff08;U6、U7&#xff09;&#xff0c;可产生两极…

钓鱼特辑(四)安全较量,摆脱“麻瓜”标签

时至今日&#xff0c;尽管员工们对网络安全有所了解&#xff0c;却往往因缺乏足够的安全意识而对攻防没有直观感知。在红队看来&#xff0c;普通员工可能犹如“麻瓜”&#xff0c;防御薄弱&#xff0c;易于突破。 现在红队以求职者或合作方等“人畜无害”的身份在日常沟通中发动…

Windows中pip换源

step1&#xff1a;检查是否安装 输入如下&#xff0c;出现版本号&#xff0c;就是安装好了 pip -V或pip --version pip3 -V pip3 --version step2&#xff1a;找到&#xff08;创建&#xff09;配置文件 对于 Windows 用户&#xff0c;配置文件在【%APPDATA%\pip\pip.ini】文…

AutoGen ConversableAgent 基类解析

目录 一、ConversableAgent 类 二、主要函数 1.1 __init__ 1.2 initiate_chat 本文主要对 AutoGen 代理的基类 ConversableAgent 进行介绍。 一、ConversableAgent 类 ConversableAgent 类是代理的基类&#xff0c;AssistantAgent 和 UserProxyAgent 是该类的子类&#x…

使用LinkedHashMap实现固定大小的LRU缓存

使用LinkedHashMap实现固定大小的LRU缓存 1. 什么是LRU&#xff1f; LRU是"Least Recently Used"的缩写&#xff0c;意为"最近最少使用"。LRU缓存是一种常用的缓存淘汰算法&#xff0c;它的核心思想是&#xff1a;当缓存满时&#xff0c;优先淘汰最近最少…

PTA L1-030 一帮一

L1-030 一帮一&#xff08;15分&#xff09; “一帮一学习小组”是中小学中常见的学习组织方式&#xff0c;老师把学习成绩靠前的学生跟学习成绩靠后的学生排在一组。本题就请你编写程序帮助老师自动完成这个分配工作&#xff0c;即在得到全班学生的排名后&#xff0c;在当前尚…

Mac下的压缩包和Win看到的不一样怎么办 Mac压缩后Win电脑看文件名会乱码

在当今多平台的数字工作环境中&#xff0c;Mac和Windows用户常常需要交换文件&#xff0c;但有时候会遇到一些兼容性问题。特别是在处理压缩文件时&#xff0c;Mac用户创建的压缩包在Windows系统中打开时&#xff0c;常常会遇到文件名乱码的问题。本文将详细讨论“Mac下的压缩包…

C语言基础(二十八)

1、冒泡排序&#xff1a; #include "date.h" #include <stdio.h> #include <stdlib.h> #include <time.h> // 函数声明 void bubbleSort(int *arr, int n); int* createRandomArray(int n, int *size); int main() { int time getTi…

Java算法之梳排序(Comb Sort)

梳排序简介 梳排序&#xff08;Comb Sort&#xff09;是冒泡排序的一个变种&#xff0c;其核心思想是在比较相邻元素之前先进行更大步长的比较。这种算法的名称来源于其工作方式类似于梳头发时的动作&#xff0c;先大范围地移动&#xff0c;然后逐渐减小移动的步长&#xff0c…

22行为型设计模式——解释器模式

一、解释器模式 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种行为型设计模式&#xff0c;主要用于解析和解释特定的语言或表达式。它的核心思想是为语言中的每种语法规则定义一个解释器&#xff0c;通过这些解释器将语言的表示形式转换为可执行的操作。解释器…

双臂机器人协作/合作阻抗建模及其控制实现(Dual-Arm Cooperative)

机器人阻抗控制是一种基于力的控制方法,其核心在于通过调整机器人的阻抗特性(如刚度、阻尼等),使机器人在与环境交互时能够表现出特定的力学行为。以下是对机器人阻抗控制的详细解析: 一、定义与内涵 机器人阻抗控制是指通过调整机器人的阻抗特性(如刚度、阻尼等),使…