【二刷hot-100】day 3

devtools/2024/10/20 10:11:28/

目录

1.最小覆盖子串

2.二叉树展开为链表

3.面试题 17.14. 最小K个数

1.最小覆盖子串

 

java">class Solution {public String minWindow(String s, String t) {char [] s1=s.toCharArray();int m=s1.length;int retleft=-1;int retright=m;int [] cnts=new int[128];int [] cntt=new int[128];for(char c: t.toCharArray()){cntt[c]++;}int left=0;for(int right=0;right<m;right++){cnts[s1[right]]++;while(isCovered(cnts,cntt)){if(right-left<retright-retleft){retleft=left;retright=right;}cnts[s1[left]]--;left++;}}return retleft<0?"":s.substring(retleft,retright+1);}private boolean isCovered(int [] cnts,int [] cntt ){for(int i='A';i<='Z';i++){if(cnts[i]<cntt[i]){return false;}}for(int i='a';i<='z';i++){if(cnts[i]<cntt[i]){return false;}}return true;}
}

2.二叉树展开为链表

先序遍历的写法。

 就是找出左子树最右边的节点以便把右子树接过来。

java">/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public void flatten(TreeNode root) {while(root!=null){//如果左子树为null,直接考虑下一个节点if(root.left==null){root=root.right;}else{//查找左子树的最右节点TreeNode pre=root.left;while(pre.right!=null){pre=pre.right;}//拼接右子树pre.right=root.right;//root的右子树换上左子树root.right=root.left;//root的左子树置空root.left=null;//下一个节点root=root.right;}}}
}

3.面试题 17.14. 最小K个数

可以直接sort然后输出,但时间复杂度较高。

 

 

java">class Solution {public int[] smallestK(int[] arr, int k) {//升序的优先队列,小根堆排序PriorityQueue<Integer> q=new PriorityQueue<>((a,b)->a-b);for (int i:arr) q.add(i);int [] ret=new int[k];for(int i=0;i<k;i++) ret[i]=q.poll();return ret;}
}

ps: 

升序的优先队列。


http://www.ppmy.cn/devtools/127261.html

相关文章

web前端网页用户注册页面

源码&#xff1a; <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>用户注册</title> </head> <body><form action"#" metho…

JavaScript 入门

1. HTML、CSS、JavaScript 之间的关系 HTML&#xff1a;网页的结构&#xff08;骨&#xff09; CSS&#xff1a;网页的表现&#xff08;皮&#xff09; JavaScript&#xff1a;网页的行为&#xff08;魂&#xff09; 2. 引入方式 3种引入方式&#xff0c;语法如下&#xff…

基于深度学习的地球观测中的目标检测

基于深度学习的地球观测中的目标检测是将深度学习技术应用于遥感数据中以自动识别和定位目标物体的过程。这一技术迅速成为遥感领域的研究热点&#xff0c;主要原因在于地球观测&#xff08;Earth Observation, EO&#xff09;平台和遥感技术的进步带来了海量的高分辨率数据&am…

TF-A(Trusted Firmware-A)及其启动流程详解:以stm32MP1平台为例

0 参考资料 stm32官网 wiki https://www.trustedfirmware.org/ https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git Trusted Firmware-A documentation ARM Power State Coordination Interface SMC Calling Convention (SMCCC) Arm System Control and Management…

游戏盾真的能无视攻击吗?

在当今社会&#xff0c;网络游戏已成为人们娱乐休闲的重要组成部分。随着游戏行业的快速扩展&#xff0c;网络安全挑战也随之加剧。DDoS攻击、CC攻击等恶意手段频繁出现&#xff0c;给游戏运营商及玩家带来了重重困扰。幸运的是&#xff0c;游戏盾这一专为游戏领域设计的网络安…

Axure使用echarts详细教程

本次使用的axure版本为rp9,下面是效果图。 接下来是详细步骤 【步骤1】在axure上拖一个矩形进来&#xff0c;命名为myChart(这个根据实际情况来,和后面的代码对应就好) 【步骤2】 点击交互->选择加载时->选择打开链接->链接外部地址 点击fx这个符号 【步骤3】在弹…

23 Shell Script服务脚本

Linux 服务脚本 一、Linux 开机自动启动服务 ​ linux开机服务原理&#xff1a; ​ ①linux系统启动首先加载kernel ​ ②初始操作系统 ​ ③login验证程序等待用户登陆 ​ 初始化操作系统 ​ kernel加载/sbin/init创建用户空间的第一个程序 ​ 该程序完成操作系统的初…

GDAL+C#实现矢量多边形转栅格

1. 开发环境测试 参考C#配置GDAL环境&#xff0c;确保GDAL能使用&#xff0c;步骤简述如下&#xff1a; 创建.NET Framework 4.7.2的控制台应用 注意&#xff1a; 项目路径中不要有中文&#xff0c;否则可能报错&#xff1a;can not find proj.db 在NuGet中安装GDAL 3.9.1和G…