leetcode942-Find the Shortest Superstring

题目

由范围 [0,n] 内所有整数组成的 n + 1 个整数的排列序列可以表示为长度为 n 的字符串 s ,其中:
如果 perm[i] < perm[i + 1] ,那么 s[i] == ‘I’
如果 perm[i] > perm[i + 1] ,那么 s[i] == ‘D’
给定一个字符串 s ,重构排列 perm 并返回它。如果有多个有效排列perm,则返回其中 任何一个 。
示例 1:
输入:s = “IDID”
输出:[0,4,1,3,2]

分析

这道题目很明显我们可以记录一个最小值和最大值,当s[i] == ‘I’ 的时候perm[i]比perm[i+1]小1,那么perm[i]可以是最小值,perm[i+1]比他大即可。当s[i]=='D’的时候perm[i]可以是最大值,perm[i+1]比他小即可,每遍历完一次就更新这个最小值和最大值,但是这种思路把问题复杂化了,这种思路每遍历一个元素要求同时更新perm[i]和perm[i+1],但是我们怎么能重复更新元素呢,而且也不能确定下一个元素到底是I还是D。所以这种思路是有问题的.
正确的思路是每遍历一个元素更新当前元素就可以了,s[i] == ‘I’ 的时候反应的是未来的i+1要比它大,如果下个元素是D那么用最大值更新如果是I那么就用最小值+1更新,然后循环这个过程。由于数组元素是长度加1,所以最终最小值和最大值肯定趋于一致,

public class findtheShortestSuperstring {
	public static void main(String[] args) {
		String str = "IDID";
		int[] arr = getArr(str);
		for(int i = 0;i<arr.length;i++) {
			System.out.println(arr[i]);
		}
	}
	public static int[] getArr(String str) {
		int len = str.length();
		int min = 0;
		int max = len;
		int[] res = new int[len+1];
		int j = 0;
		for(int i = 0;i<len;i++) {
			if(str.charAt(i) == 'I') {
				res[j++] = min++;
			} else {
				res[j++] = max--;
			}
		}
		res[j] = max;
		return res;
	}
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【项目】YOLOv8/YOLOv5/YOLOv9半监督ssod火灾烟雾检测(YOLOv8_ssod)

假期闲来无事找到一份火灾烟雾数据集&#xff0c;自己又补充标注了一些&#xff0c;通过论文检索发现现在的火灾检测工作主要局限于对新场景的泛化性不够强&#xff0c;所以想着用半监督&#xff0c;扩充数据集的方法解决这个问题&#xff0c;所以本文结合使用现在检测精度较高…

成功案例丨守“鲜”有道 Fortinet为都乐筑就全球安全防护网

作为全球知名的跨国食品企业&#xff0c;都乐业务遍布各大洲。在各种新兴业务模式层出不穷的数字化时代&#xff0c;都乐面临着生产持续性、安全运营、供应链安全等严峻的网络安全挑战。通过采用Fortinet的FortiSIEM、FortiMail等系列Fortinet Security Fabric安全平台生态产品…

DaVinci Resolve Studio 19(达芬奇19调色剪辑)win/mac激活版

DaVinci Resolve Studio是一个结合专业的8k 编辑&#xff0c;颜色混合&#xff0c;视觉效果和音频后期制作的软件。只需点击一下&#xff0c;你就可以立即在编辑、混音、特效和音频流之间切换。此外&#xff0c;达芬奇解决(达芬奇)是一个多用户协作的解决方案&#xff0c;使编辑…

Swift - 基础语法

文章目录 Swift - 基础语法1. 常量1.1 只能赋值1次1.2 它的值不要求在编译时期确定&#xff0c;但使用之前必须赋值1次1.3 常量、变量在初始化之前&#xff0c;都不能使用 2. 标识符3. 常用数据类型4. 字面量4.1 布尔4.2 字符串4.3 整数4.4 浮点数4.5 数组4.6 字典 5. 类型转换…

OpenHarmony音视频—opus

简介 Opus是一种用于在互联网上进行交互式语音和音频传输的编解码器。它可以从低比特率窄带语音扩展到非常高的高品质立体声音乐。 下载安装 直接在OpenHarmony-SIG仓中搜索opus并下载。 使用说明 以OpenHarmony 3.1 Beta的rk3568版本为例 将下载的opus库代码存在以下路径&a…

OSPF的LSA详解

一、什么是LSA&#xff1f;LSA作用&#xff1f; 在OSPF协议中&#xff0c;LSA全称链路状态通告&#xff0c;主要由LSA头部信息&#xff08;LSA摘要&#xff09;和链路状态组成。部分LSA只有LSA头部信息&#xff0c;无链路状态信息。使用LSA来传递路由信息和拓扑信息&#xff0c…

2024全网最火的接口自动化测试,一看就会

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

网工内推 | 外企网工,思科认证优先,弹性工作,补贴多

01 淳华科技&#xff08;昆山&#xff09;有限公司 招聘岗位&#xff1a;网络工程师 职责描述&#xff1a; 1.全厂网络规划 2.Cisco交换机和路由器的配置 3.日常设备点检\维护\配置 4.网络设备的评估并做报告说明 任职要求&#xff1a; 1.具有一定的网络工作经验有Cisco或是其…

DNS域名系统 | unbound

目录 DNS 命名空间和域名结构 DNS的命名空间的结构: 域名服务器的分类&#xff1a; ​编辑 DNS 资源记录 常见type: DNS报文结构 请求报文&#xff1a; 响应报文&#xff1a; 解析类型 递归查询 迭代查询 DNS劫持 DNS劫持方法&#xff1a; 防御措施 DNS服务部署…

05_Scala运算符

文章目录 **1.Scala运算符****2.scala中没有 --等语法****3.逻辑运算符和Java完全相同****4.scala认为万物皆对象** 1.Scala运算符 Scala底层 使用的是equals() 程序员比较两个量的时候&#xff0c;谁来没事比较内存地址&#xff1f; Java中引用数据类型比较地址&#xff0…

Allure精通指南(05)定制化报告内容(环境信息、图标、缺陷类别)

文章目录 Allure 自定义测试环境信息Allure 自定义缺陷类别信息Allure 自定义图标步骤一步骤二步骤三 Allure 自定义测试环境信息 步骤 1&#xff1a;创建 environment.properties 文件 在项目根目录或任何其他不会被--clean-alluredir参数影响的目录下创建 environment.proper…

OpenHarmony语言基础类库【@ohos.util.LightWeightMap (非线性容器LightWeightMap)】

LightWeightMap可用于存储具有关联关系的key-value键值对集合&#xff0c;存储元素中key值唯一&#xff0c;每个key对应一个value。 LightWeightMap依据泛型定义&#xff0c;采用轻量级结构&#xff0c;初始默认容量大小为8&#xff0c;每次扩容大小为原始容量的两倍。 集合中…

1、opencv介绍与开发环境搭建

1、opencv介绍 OpenCV 是 Intel 开源计算机视觉库&#xff0c;是一个跨平台的开源计算机视觉和机器学习软件库。它由一系列 C 函数和少量 C 类构成&#xff0c;可用于开发实时的图像处理、计算机视觉以及模式识别程序。 该库有 2500 多种优化算法&#xff0c;其中包括一套全面…

python怎么输出倒序

python怎么输出倒序&#xff1f;下面给大家介绍四种方法&#xff1a; 创建测试列表 >>> lst [1,2,3,4,5,6]方法1&#xff1a; >>> lst.reverse() #reverse()反转 >>> lst [6, 5, 4, 3, 2, 1] 方法2&#xff1a; >>> lst1 [i for i in …

2024年最好用的10款ER图神器!

分享10款ER图工具&#xff0c;详细分析他们的功能特点、价格和适用场景&#xff0c;可以根据你的需求进行选择。ER图&#xff08;Entity-Relationship Diagram&#xff09;是数据库设计中常用的一种模型&#xff0c;用于描述实体之间的关系。这种图形化的表示方法旨在帮助人们理…

数据结构——二叉树练习(深搜广搜)

数据结构——二叉树练习 路径之和深度优先算法和广度优先算法二叉搜索树判断一棵二叉树是否为搜索二叉树和完全二叉树 我们今天来看二叉树的习题&#xff1a; 路径之和 https://leetcode.cn/problems/path-sum-ii/ 这是一个典型的回溯&#xff0c;深度优先算法的题&#xff0c…

解决Win10 C盘扩展卷灰色不可用的简单方法!

当你发现电脑C盘空间不足&#xff0c;却又一段Win10 C盘扩展卷选项无法使用的状况时&#xff0c;该如何应对呢&#xff1f;本篇文章将向你介绍3种简单的方法&#xff0c;帮助你轻松解决C盘扩容的问题&#xff01; C盘扩容的重要性&#xff1f; 当前&#xff0c;大部分台式机和…

普乐蛙VR航天航空体验馆VR双人旋转座椅元宇宙VR飞船

多长假来袭&#xff01;&#xff01;想为门店寻找更多新鲜有趣的吸粉体验&#xff1f;想丰富景区体验&#xff1f;别着急&#xff0c;小编为你准备了一款爆款设备——时光穿梭机&#xff0c;720无死角旋转&#xff01;&#xff01;吸睛、刺激体验&#xff0c;将亲子、闺蜜、情侣…

【链表】Leetcode K个一组翻转链表

题目讲解 25. K 个一组翻转链表 算法讲解 虽然这道题是一道困难题&#xff0c;但是从代码层面很简单&#xff0c;只是一道简单的模拟&#xff1a;我们要先求出总共需要翻转的链表有多少组&#xff08;链表的长度 / k&#xff09;&#xff0c;接下来就是翻转k的链表最链接的问…

【论文速读】|理解基于大语言模型的模糊测试驱动程序生成

本次分享论文&#xff1a;Understanding Large Language Model Based Fuzz Driver Generation 基本信息 原文作者&#xff1a;Cen Zhang, Mingqiang Bai, Yaowen Zheng, Yeting Li, Xiaofei Xie, Yuekang Li, Wei Ma, Limin Sun, Yang Liu 作者单位&#xff1a;南洋理工大学…
最新文章