滑动窗口和螺旋矩阵

209. 长度最小的子数组

题目

给定一个含有 n 个正整数的数组和一个正整数 target

找出该数组中满足其总和大于等于 target 的长度最小的 连续

子数组

[numsl, numsl+1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0

示例 1:

输入:target = 7, nums = [2,3,1,2,4,3]
输出:2
解释:子数组 [4,3] 是该条件下的长度最小的子数组。

示例 2:

输入:target = 4, nums = [1,4,4]
输出:1

示例 3:

输入:target = 11, nums = [1,1,1,1,1,1,1,1]
输出:0

答案

class Solution {public int minSubArrayLen(int target, int[] nums) {int slow = 0;int sum = 0;int res =Integer.MAX_VALUE;for(int fast=0;fast<nums.length;fast++){sum += nums[fast];while(sum>=target){res = Math.min(res,fast-slow+1);sum -= nums[slow++];}}return res==Integer.MAX_VALUE ? 0 : res;}
}








904. 水果成篮

题目

你正在探访一家农场,农场从左到右种植了一排果树。这些树用一个整数数组 fruits 表示,其中 fruits[i] 是第 i 棵树上的水果 种类

你想要尽可能多地收集水果。然而,农场的主人设定了一些严格的规矩,你必须按照要求采摘水果:

  • 你只有 两个 篮子,并且每个篮子只能装 单一类型 的水果。每个篮子能够装的水果总量没有限制。
  • 你可以选择任意一棵树开始采摘,你必须从 每棵 树(包括开始采摘的树)上 恰好摘一个水果 。采摘的水果应当符合篮子中的水果类型。每采摘一次,你将会向右移动到下一棵树,并继续采摘。
  • 一旦你走到某棵树前,但水果不符合篮子的水果类型,那么就必须停止采摘。

给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。

示例 1:

输入:fruits = [1,2,1]
输出:3
解释:可以采摘全部 3 棵树。

示例 2:

输入:fruits = [0,1,2,2]
输出:3
解释:可以采摘 [1,2,2] 这三棵树。
如果从第一棵树开始采摘,则只能采摘 [0,1] 这两棵树。

答案

class Solution {public int totalFruit(int[] fruits) {Map<Integer,Integer> map = new HashMap();int res = Integer.MIN_VALUE;int slow = 0;for(int fast=0;fast<fruits.length;fast++){map.put(fruits[fast],map.getOrDefault(fruits[fast],0)+1);while(map.size()>2){map.put(fruits[slow],map.get(fruits[slow])-1);if(map.get(fruits[slow])==0){map.remove(fruits[slow]);}slow++;}res = Math.max(res,fast-slow+1);}return res;}
}








76. 最小覆盖子串

题目

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ""

注意:

  • 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。
  • 如果 s 中存在这样的子串,我们保证它是唯一的答案

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最小覆盖子串 "BANC" 包含来自字符串 t 的 'A'、'B' 和 'C'。

示例 2:

输入:s = "a", t = "a"
输出:"a"
解释:整个字符串 s 是最小覆盖子串。

答案








59. 螺旋矩阵 II

题目

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

在这里插入图片描述

输入:n = 3
输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

输入:n = 1
输出:[[1]]

答案

class Solution {public int[][] generateMatrix(int n) {int[][] res = new int[n][n];int start = 0;int count = 1;int loop = 1;int i,j;while(loop<=n/2){i= start;j = start;while(j<n-loop){res[i][j++] = count++;}while(i<n-loop){res[i++][j] = count++;}while(j>=loop){res[i][j--] = count++;}while(i>=loop){res[i--][j] = count++; }start++;loop++;}if(n%2==1){res[start][start] = count;}return res;}
}








54. 螺旋矩阵

题目

给你一个 mn 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。

示例 1:

在这里插入图片描述

输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]
输出:[1,2,3,6,9,8,7,4,5]

示例 2:

在这里插入图片描述

输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]
输出:[1,2,3,4,8,12,11,10,9,5,6,7]

答案

class Solution {public List<Integer> spiralOrder(int[][] matrix) {List<Integer> res = new ArrayList();int left = 0,right = matrix[0].length-1;int top = 0,buttom = matrix.length-1;int i,j;while(left<=right && top<=buttom){j = left;i = top+1;while(j<=right){res.add(matrix[top][j++]);}while(i<=buttom){res.add(matrix[i++][right]);}if(left<right && top<buttom){j = right -1;i = buttom;while(j>left){res.add(matrix[buttom][j--]);}while(i>top){res.add(matrix[i--][left]);}}left++;right--;top++;buttom--;}return res;}
}








LCR 146. 螺旋遍历二维数组

题目

给定一个二维数组 array,请返回「螺旋遍历」该数组的结果。

螺旋遍历:从左上角开始,按照 向右向下向左向上 的顺序 依次 提取元素,然后再进入内部一层重复相同的步骤,直到提取完所有元素。

示例 1:

输入:array = [[1,2,3],[8,9,4],[7,6,5]]
输出:[1,2,3,4,5,6,7,8,9]

示例 2:

输入:array  = [[1,2,3,4],[12,13,14,5],[11,16,15,6],[10,9,8,7]]
输出:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]

答案

class Solution {public int[] spiralArray(int[][] array) {if(array==null || array.length==0){return new int[]{};}int m = array.length,n = array[0].length; int[] res = new int[m*n];int index = 0;int left = 0,right = n - 1;int top = 0,buttom = m - 1;int i,j;while(left<=right && top<=buttom){j = left;i = top + 1;while(j<=right){res[index++] = array[top][j++];}while(i<=buttom){res[index++] = array[i++][right]; }if(left<right && top<buttom){j = right - 1;i = buttom;while(j>left){res[index++] = array[buttom][j--];}while(i>top){res[index++] = array[i--][left];}}left++;right--;top++;buttom--;}return res;}
}

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

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

相关文章

LInux 进程替换(理解系统调用)

目录 一、替换原理 二、替换函数 1、exec函数 2、命名理解 3、返回值 4、使用execl/lp、execv/vp 5、执行自定义命令 Makefile编译多个文件 命令行程序mycmd.c 传入自己的可执行文件 7、子进程都继承父进程环境变量 8、execle/ve修改子进程环境变量 9、exece函数为…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等&#xff0c;并不能覆盖所有的需求&#xff0c;我们之前讲过很少用到的因果图法&#xff0c;下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口&#xff0c;每个…

SpringBoot 过滤器

SpringBoot 过滤器简介 SpringBoot 是一种广泛使用的 Java 框架&#xff0c;用于创建微服务和企业级应用程序。它提供了许多功能&#xff0c;包括用于处理 HTTP 请求和响应的过滤器。在 SpringBoot 中&#xff0c;过滤器是一种组件&#xff0c;它允许您在请求到达控制器之前和…

2024批量导出公众号所有文章生成目录,这下方便找文章了

公众号历史文章太多&#xff0c;手机上翻起来太费劲&#xff0c;怎么快速找到某一天的文章呢&#xff1f;比如深圳卫健委这个号从2014到2024发布近万篇文章。 公众号历史文章太多&#xff0c;手机上翻起来太费劲&#xff0c;怎么快速找到某一天的文章&#xff1f; 如果要找2020…

wsl-oraclelinux 安装 cuda

wsl-oraclelinux 安装 cuda 1. 安装 cuda2. 安装 cuDNN3. 配置环境变量 1. 安装 cuda wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda_12.4.0_550.54.14_linux.run sudo sh cuda_12.4.0_550.54.14_linux.run2. 安装 cuDNN sudo dnf …

第十四届蓝桥杯省赛真题 Java C 组【原卷】

文章目录 发现宝藏【考生须知】试题 A \mathrm{A} A : 求和试题 B: 分糖果试题 C: 三国游戏试题 D : \mathrm{D}: D: 平均试题 E \mathrm{E} E : 填充试题 F : \mathrm{F}: F: 棋盘试题 G: 子矩阵试题 H: 公因数匹配试题 I: 异或和之差试题 J : \mathrm{J}: J: 太阳 发现宝…

总结linux常用命令

Linux常用命令总结如下&#xff1a; 文件与目录操作&#xff1a; ls&#xff1a;列出目录内容cd&#xff1a;改变当前目录pwd&#xff1a;显示当前工作目录mkdir&#xff1a;创建新目录cp&#xff1a;复制文件或目录rm&#xff1a;删除文件或目录mv&#xff1a;移动或重命名文件…

命令模式在量化交易系统开发中的应用

文章目录 一、命令模式的特点及优点二、命令模式在量化交易系统的应用 一、命令模式的特点及优点 命令模式是一种行为设计模式&#xff0c;它将请求封装成一个对象&#xff0c;从而使得可以使用不同的请求、队列或者日志来参数化其他对象。命令模式的特点和优点如下&#xff1a…

如何重置iPhone的网络设置?这里提供详细步骤

前言 本文介绍如何重置iPhone上的网络设置。该信息适用于iPhone 12到iPhone 6以及iOS 14到iOS 8。 如何在iPhone上重置网络设置 采取以下步骤重置iPhone上的网络设置&#xff1a; 1、在iPhone上&#xff0c;打开设置应用程序。 2、单击通用。 3、滚动到屏幕底部&#xff…

eplan新建符号及符号向量(实现新建符号旋转)

建符号之前先建符号库,这里直接新建符号 选择变量A,写符号名(英文字母),点确定 这时会打开一个空白页面,新建的符号在这里编辑 从原有的符号中插入过来直接编辑(也可自己画,最关键是自动引出线要加中断点) 插入进来后进行编辑: 编辑后: 符号向量A编辑完成后(保持符号编辑页面…

构建灵活可配置的JavaScript插件系统

在现代软件开发中&#xff0c;插件系统为应用程序提供了巨大的灵活性和可扩展性。它们允许开发者在不修改核心代码的情况下扩展和定制应用程序的功能。本文将详细介绍如何构建一个灵活的JavaScript插件系统&#xff0c;包括插件的注册、配置、安装、执行和卸载。 一、插件系统…

基于springboot实现酒店客房管理系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现酒店客房管理平台系统演示 摘 要 随着人们的物质水平的提高&#xff0c;旅游业和酒店业发展的速度越来越快。近年来&#xff0c;市面上酒店的数量和规模都在不断增加&#xff0c;如何提高酒店的管理效率和服务质量成为了一个重要的问题。伴随着信息技术的发…

2核4G服务器够用吗?性能测评自己看

腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户同时在1秒内打开网站&#xff0c;并发数为10&#xff0c;经阿腾云测试&a…

100道面试必会算法-03-快速排序

100道面试必会算法-03-快速排序 快速排序 给你一个整数数组 nums&#xff0c;请你将该数组升序排列。 示例 1&#xff1a; 输入&#xff1a;nums [5,2,3,1] 输出&#xff1a;[1,2,3,5]示例 2&#xff1a; 输入&#xff1a;nums [5,1,1,2,0,0] 输出&#xff1a;[0,0,1,1,…

3级考题(3)(c++)

#204. 鸡兔同笼[2] 题目描述 一个笼子里面关了鸡和兔子&#xff08;鸡有 2 只脚&#xff0c;兔子有 4 只脚&#xff0c;没有例外&#xff09;。 已经知道了笼子里面脚的总数 a&#xff0c;问笼子里面至少有多少只动物&#xff0c;至多有多少只动物。 输入格式 一行&#x…

linux 命令之tar命令

简介 tar(tape archive): 用于打包和解压文件。 常用参数列表 参数功能-c(create)打包-x(extract)解压-f<文件名>指定归档文件名-v显示操作详细过程-z通过gzip压缩归档文件-j通过bzip2压缩归档文件-J通过xz压缩归档文件-C <目录>切换到指定目录后在执行操作–ex…

详细了解CSS

1.1 样式定义方式 行内样式表&#xff08;inline style sheet&#xff09; 直接定义在标签的style属性中。 作用范围&#xff1a;仅对当前标签产生影响。 例如&#xff1a; <img src"/images/mountain.jpg" alt"" style"width: 300px; height:…

Day1-力扣刷题学习打卡

1、两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以…

释放人工智能的力量:GPU服务器托管和高电机柜托管的关键作用

随着人工智能技术的不断发展&#xff0c;GPU服务器托管和高电机柜托管也变得愈发重要。这些技术在人工智能领域发挥着关键作用&#xff0c;为AI算法的训练和推理提供了强大的计算支持。 GPU服务器托管是指将GPU服务器放置在专门的数据中心中&#xff0c;通过云服务提供商提供的…

体系班第十七节(经典递归)

1汉诺塔 从左移到最右&#xff0c;圆盘必须满足小压大原则 写一个大方法&#xff0c;大方法包括两步&#xff1a;第一步将最后一个圆盘上面的所有的放到第二个塔上面&#xff0c;然后将最后一个圆盘放到最后塔上面&#xff0c;再把第二个塔上面圆盘全放在第三个塔上面 #incl…