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

LeetCode Hot100(字串)

560. 和为 K 的子数组

因为存在负数,该题只能直接暴力了,当然,也可以使用前缀和,但是时间复杂度一样

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

239. 滑动窗口最大值

优先队列维护即可,因为自定义优先队列返回的是自定义最大最小值,我们每一次放入值之后,开始特判当前位置过期的就可以了

class Solution {public  int[] maxSlidingWindow(int[] nums, int k) {PriorityQueue<Node> queue = new PriorityQueue<>();int[] ans = new int[nums.length - k + 1];int index = 0;for (int i = 0; i < nums.length; i++) {queue.offer(new Node(nums[i], i));while (queue.peek().getIndex() < i - k + 1) {queue.poll();}if (i >= k - 1) {ans[index++] = queue.peek().getVal();}}return ans;}static class Node implements Comparable<Node> {int val;int index;public Node(int val, int index) {this.val = val;this.index = index;}public int getVal() {return val;}public int getIndex() {return index;}@Overridepublic int compareTo(Node o) {// 降序排列(最大堆)return Integer.compare(o.val, this.val);}}
}

76. 最小覆盖子串

跟之前的滑动窗口非常像,我们只需要统计当前区间是否满足完全包含t就可以了,需要注意的一点是,最好通过左端点+len放最小值最后提取字符串时间较短

class Solution {public String minWindow(String s, String t) {char []arr=s.toCharArray();char []brr=t.toCharArray();int sum=brr.length;int []crr=new int[200];HashSet<Character>mark=new HashSet<>();for(int i=0;i<sum;i++){int f=brr[i];mark.add(brr[i]);crr[f]++;}sum=mark.size();int sum2=0;int l2=0;for(int i=0;i<arr.length;i++){if(mark.contains(arr[i])){l2=i;break;}}int l=l2;//起始左边int len=1000000;//长度int []drr=new int[200];for(int i=0;i<arr.length;i++){int f=arr[i];if(!mark.contains(arr[i])){continue;}drr[f]++;if(drr[f]==crr[f]){sum2++;}while(sum==sum2){if(sum2==sum){int len2=i-l2+1;if(len2<=len){len=len2;l=l2;}}int f2=arr[l2];if(!mark.contains(arr[l2])){l2++;continue;}drr[f2]--;l2++;if(drr[f2]<crr[f2]){sum2--;break;}}}if(len==1000000){return "";}else{String ans=s.substring(l, len+l);
//            System.out.println(ans+"----"+l+"---"+len);return ans;}}
}

http://www.xdnf.cn/news/8391.html

相关文章:

  • 电子电路:深入理解电磁耦合的定义与应用
  • 5.2.2 使用注解方式整合MyBatis
  • 树莓派内核源码的下载,配置,编译和替换
  • 【mysql】mysql的高级函数、高级用法
  • AI编辑器规则
  • LeRobot 框架的开发指南 (上)
  • 【【嵌入式开发 Linux 常用命令系列 19 -- linux top 命令的交互使用介绍】
  • Vue常用自定义指令-积累的魅力【VUE】
  • DETR3D- 3D Object Detection from Multi-view Images via 3D-to-2D Queries
  • 展锐 Android 15 锁定某个App版本的实现
  • OpenGL ES 基本基本使用、绘制基本2D图形
  • DDS compiler(6.0) IP核配置与使用教程
  • 基于Rust语言的Rocket框架和Sqlx库开发WebAPI项目记录(五)
  • 【数据架构05】数据要素架构篇
  • 二、OpenCV图像处理-几何变换
  • 服务接口鉴权与内部认证:自定义注解与AOP实现的企业级实践
  • Android 14 Binderized HAL开发实战指南(AIDL版)
  • StringBuilder 和 StringBuffer 的线程安全分析
  • maven添加自己下载的jar包到本地仓库
  • Python字典的工作原理:深入理解哈希表实现
  • Redis主从+哨兵+集群分片
  • 回溯算法:解锁多种问题的解决之门
  • 利用Qt绘图随机生成带多种干扰信息的数字图片
  • Lavavel学习笔记(Eloquent ORM/Swoole 定时任务)
  • Logback 在 Spring Boot 中的详细配置
  • 【深尚想!爱普特APT32F1023H8S6单片机重构智能电机控制新标杆】
  • PostgreSQL 软件升级
  • 06 如何定义方法,掌握有参无参,有无返回值,调用数组作为参数的方法,方法的重载
  • 解构赋值与剩余参数:语法特性背后的思考
  • Go语言爬虫系列教程(三)HTML解析技术