目录
- class Solution {
- public int[] findIndices(int[] nums, int ind, int val) {
- int[] res={-1,-1};
- int n=nums.length;
- for(int i=0;i
- {
-
- for(int j=i;j
- {
- if(Math.abs(nums[i]-nums[j])>=val&&Math.abs(i-j)>=ind)
- {
- res[0]=i;
- res[1]=j;
- return res;
- }
- }
- }
- return res;
- }
- }
2、最短且字典序最小的美丽字符串 - 滑动窗口

(1)枚举
思路:
要求满足k个1的最小串,因此最短长度必为k
我们可以从k开始枚举子串长度,然后截取看其中1的个数,若满足k则更新最小串
- class Solution {
- public String shortestBeautifulSubstring(String S, int k) {
- if(S.replace("0","").length()
return ""; //如果全部1都比k少则直接返回空句 -
- int n=S.length();
- int cur=0;
- char[] s=S.toCharArray();
- String res=S;
-
- for(int len=k;len<=n;len++)
- {
- for(int i=0;i
1;i++) - {
- String t=S.substring(i,i+len);
- if(t.replace("0","").length()==k)
- if(t.length()
0) res=t; - }
- }
- return res;
- }
- }
(2)滑动窗口
思路:
顺序移动右边界,如果窗口内1的个数大于k,则缩小左边界直至窗口内1个数小于等于k
当1的个数=k时,更新字典序最小的最短串
- class Solution {
- public String shortestBeautifulSubstring(String S, int k) {
- if(S.replace("0","").length()
return ""; //如果全部1都比k少则直接返回空句 -
- int n=S.length();
- int l=0,cur=0;
- char[] s=S.toCharArray();
- String res=S;
-
- for(int r=0;r
- {
- cur+=s[r]-'0';
- while(cur>k || s[l]=='0')
- {
- cur-=s[l]-'0';
- l++;
- }
- if(cur==k)
- {
- String t=S.substring(l,r+1);
- if(t.length()
0) res=t; - }
- }
- return res;
- }
- }
3、找出满足差值条件的下标 II - 双指针 + 思维

思路:
题意和第一题一样,但数据范围限定不能用双for循环
我们可以直接枚举满足 |i - j| ≥ index 的区间,也就是直接限定差值j从index开始枚举
这样i = j - index才永远满足 i>0 在合法区间内
然后找出合法区间的最大最小值,在
- nums[j] - nums[minid] >= value
- nums[maxid] - nums[j] >= value
最有可能满足第二个条件
- class Solution {
- public int[] findIndices(int[] nums, int index, int value) {
- int maxid=0,minid=0;
-
- for(int j=index;j
- {
- int i=j-index; //这里的i肯定符合|i-j|>=index
-
- //找出最大值和最小值的下标
- if(nums[i]>nums[maxid]) maxid=i;
- else if(nums[i]
-
- if(nums[maxid]-nums[j]>=value) return new int[]{maxid,j};
-
- if(nums[j]-nums[minid]>=value) return new int[]{minid,j};
-
- }
- return new int[]{-1,-1};
- }
- }
-
相关阅读:
Kafka 在分布式系统中的 7 大应用场景
Postman请求API接口测试步骤和说明
基于云原生技术的融合通信是如何实现的?
使用 vue + vant 开发移动端网页
呼叫中心-拨号方案和路由配置okcc智能系统
selinux-policy-default(2:2.20231119-2)软件包内容详细介绍(1)
设计模式之【单例模式】全解,单例模式实现方式,暴力打破单例模式与解决方案,你真的认识单例模式吗?
POJ3322 Bloxorz I 题解
git:切换到指定的commit
基于Spring Boot+MySQL的半自动标注系统(人、车、人脸的自动检测)设计与实现
-
原文地址:https://blog.csdn.net/weixin_61639349/article/details/133907331
-
最新文章
-
沪漂五周年了:我越来越迷茫了
Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
MySQL-Seconds_behind_master的精度误差
[MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
Agent OS :五种驯服不确定性的范式
PortSwigger SQL注入LAB11
数据库即时编译JIT
[Begin]AI Learn Data Day 0
深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU