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

子串算法题

子串

    • 1、和为k的子数组
    • 2、滑动窗口最大值

1、和为k的子数组

在这里插入图片描述
解题思路:这道题我是采用的两层for循环遍历,因为题目要求的是子数组要连续,所以只需要按顺序将数组里面的值加到sum,一旦和为k,cnt就加一,继续遍历。

class Solution {public int subarraySum(int[] nums, int k) {int cnt = 0;for(int i = 0;i<nums.length;i++){int sum = 0;for(int j = i;j<nums.length;j++){if((sum+nums[j])==k){cnt++;}sum+=nums[j];}}return cnt;}
}

2、滑动窗口最大值

在这里插入图片描述
解题思路:采用双向队列,始终维持滑动窗口中最大的值。在加入一个数的时候要判断前面有没有比他小的,如果有就从双向队列的后面弹出。并且要比较存到队列里面的数是不是在滑动窗口的范围内。最后队列的顶部元素就是这个的这一段滑动窗口的最大值。

class Solution {public int[] maxSlidingWindow(int[] nums, int k) {if(nums.length==0||k<=0||nums==null){return new int[0];}int[] result = new int[nums.length-k+1];Deque<Integer> ans = new LinkedList<>();for(int i = 0;i<nums.length;i++){while(!ans.isEmpty()&&ans.peekFirst()<i-k+1){ans.pollFirst();}while(!ans.isEmpty()&&nums[ans.peekLast()]<nums[i]){ans.pollLast();}ans.offerLast(i);if(i>=k-1){result[i-k+1] = nums[ans.peekFirst()];}}return result;}
}
http://www.dtcms.com/a/288062.html

相关文章:

  • Web攻防-身份验证篇JWT令牌空密钥未签名密钥爆破JWKJWUKID算法替换CVE报告复盘
  • 在Vscode中使用Kimi K2模型:实践指南,三分钟生成个小游戏
  • TypeScript 中的「类」:从语法到实战的完整指南
  • 论C/C++的条件编译#if、#ifdef、#ifndef、#undef
  • Promise入门
  • 三级知识点汇总(详解)【c++】——2
  • 我用Cursor,1周上线了一个虚拟资料流量主小程序技术选型
  • Linux“一切皆文件“设计哲学 与 Linux文件抽象层:struct file与file_operations的架构解析
  • 【ChatOpenAI】常用方法详解
  • HOT100——动态规划篇Leetcode221. 最大正方形
  • C++ std::thread线程类 相关问题、函数总结
  • 单调队列深度解析(下)
  • 如何解决 ‘NoneType‘ object has no attribute ‘get‘问题
  • GA-BP遗传算法优化BP神经网络数据生成,采用SVM分类模型评估
  • LM317 芯片推荐电路中保护二极管工作原理
  • 教育科技内容平台的用户定位与产品方案:从需求到解决方案的精准匹配
  • prometheus UI 和node_exporter节点图形化Grafana
  • GaussDB 数据库架构师修炼(六) 集群工具管理-1
  • 农经权二轮延包—批量出图片
  • 了解.NET Core状态管理:优化技巧与常见问题解决方案
  • 第4章 数据的排序、筛选和分类汇总
  • 金融系统AIGC能力中心赋能实战指南
  • 告别 T+1!解密金融级实时数据平台的构建与实践
  • RK3568 Linux驱动学习——SDK安装编译
  • 浅谈Rust语言特性
  • [C/C++安全编程]_[中级]_[如何避免出现野指针]
  • MySQL 写入性能优化全攻略(附 GitHub 面试题项目链接)
  • 相机参数的格式与作用
  • 大语言模型置信度增强实战指南
  • 第 3 篇:《WHERE 就是刷选项——像点外卖一样精确筛房!》