LeetCode 484. 寻找排列(找规律+贪心)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

现在给定一个只由字符 ‘D’ 和 ‘I’ 组成的 秘密签名。
‘D’ 表示两个数字间的递减关系,‘I’ 表示两个数字间的递增关系。
并且 秘密签名 是由一个特定的整数数组生成的,该数组唯一地包含 1 到 n 中所有不同的数字(秘密签名的长度加 1 等于 n)。
例如,秘密签名 “DI” 可以由数组 [2,1,3] 或 [3,1,2] 生成,但是不能由数组 [3,2,4] 或 [2,1,3,4] 生成,因为它们都不是合法的能代表 “DI” 秘密签名 的特定串。

现在你的任务是找到具有最小字典序[1, 2, ... n] 的排列,使其能代表输入的 秘密签名。

示例 1:
输入: "I"
输出: [1,2]
解释: [1,2] 是唯一合法的可以生成秘密签名 "I" 的特定串,
数字 12 构成递增关系。示例 2:
输入: "DI"
输出: [2,1,3]
解释: [2,1,3][3,1,2] 可以生成秘密签名 "DI",
但是由于我们要找字典序最小的排列,因此你需要输出 [2,1,3]。注:
输出字符串只会包含字符 'D''I'。
输入字符串的长度是一个正整数且不会超过 10,000

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/find-permutation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 先生成一个正序数字序列
  • 找到连续的D的区间,左端点遇到D,记录下来为l,右端点遇到I,记录下来为r
  • 反转[l,r]的数字
    在这里插入图片描述
class Solution {
public:vector<int> findPermutation(string s) {int n = s.size(), idx, l = 0, r = 0;vector<int> ans(n+1);for(idx = 1; idx <= n+1; ++idx)ans[idx-1] = idx;while(r < n){if(s[r] == 'I'){if(l < r){reverse(ans, l, r);l = r;}l++, r++;}else//下降r++;}if(l < r)reverse(ans, l, r);return ans;}void reverse(vector<int>& ans, int i, int j){while(i < j)swap(ans[i++], ans[j--]);}
};

8 ms 9.5 MB


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode 651. 4键键盘(DP,Ctrl+CV)

文章目录1. 题目2. 解题1. 题目 假设你有一个特殊的键盘包含下面的按键&#xff1a; Key 1: (A)&#xff1a;在屏幕上打印一个 A。Key 2: (Ctrl-A)&#xff1a;选中整个屏幕。Key 3: (Ctrl-C)&#xff1a;复制选中区域到缓冲区。Key 4: (Ctrl-V)&#xff1a;将缓冲区内容输出…

oracle scn隐藏参数,Oracle隐含参数scn不一致启动

Oracle隐含参数&#xff1a;allow_resetlogs_corruption的使用提示&#xff1a;Oracle的隐含参数只应该在测试环境或者在Oracle Support的支持下使用orOracle隐含参数&#xff1a;allow_resetlogs_corruption的使用提示&#xff1a;Oracle的隐含参数只应该在测试环境或者在Orac…

LeetCode 298. 二叉树最长连续序列(自顶向下)

文章目录1. 题目2. 解题1. 题目 给你一棵指定的二叉树&#xff0c;请你计算它最长连续序列路径的长度。 该路径&#xff0c;可以是从某个初始结点到树中任意结点&#xff0c;通过「父 - 子」关系连接而产生的任意路径。 这个最长连续的路径&#xff0c;必须从父结点到子结点…

LeetCode 159. 至多包含两个不同字符的最长子串(滑动窗口)

文章目录1. 题目2. 解题1. 题目 给定一个字符串 s &#xff0c;找出 至多 包含两个不同字符的最长子串 t &#xff0c;并返回该子串的长度。 示例 1: 输入: "eceba" 输出: 3 解释: t 是 "ece"&#xff0c;长度为3。示例 2: 输入: "ccaabbb" 输…

linux nginx 图片服务器,搭建Nginx图片服务器(Linux)

wget http://nginx.org/download/nginx-1.19.1.tar.gzyum install gcc-cyum install -y pcre pcre-develyum install -y zlib zlib-develyum install -y openssl openssl-devel进入nginx目录./configure --prefix/usr/local/nginx --pid-path/var/run/nginx/nginx.pid --loc…

LeetCode 163. 缺失的区间

文章目录1. 题目2. 解题1. 题目 给定一个排序的整数数组 nums &#xff0c;其中元素的范围在 闭区间 [lower, upper] 当中&#xff0c;返回不包含在数组中的缺失区间。 示例&#xff1a;输入: nums [0, 1, 3, 50, 75], lower 0 和 upper 99, 输出: ["2", "…

小白学数据分析-----聚类分析理论之TwoSteps理论篇+实践篇

昨天分享了以前学习的聚类分析算法K-Means的部分知识&#xff0c;其实这个主要是了解一下这个算法的原理和适用条件就行了&#xff0c;作为应用而不是作为深入研究&#xff0c;能够很好的将业务和算法模型紧密结合的又有几人呢&#xff1f;所以一些基本知识还是很必要的&#x…

LeetCode 244. 最短单词距离 II(哈希map+set二分查找)

文章目录1. 题目2. 解题2.1 暴力超时2.2 哈希表set二分查找1. 题目 请设计一个类&#xff0c;使该类的构造函数能够接收一个单词列表。 然后再实现一个方法&#xff0c;该方法能够分别接收两个单词 word1 和 word2&#xff0c;并返回列表中这两个单词之间的最短距离。 您的方法…

从根本上解决 Infopath 2010 重复表的序号问题

经过多长期的查找资料&#xff0c;今天终于找到如何解决Infopath 重复表序号的问题&#xff0c;其实也很简单只用Xpath 语法就可以了 count(../preceding-sibling::*[local-name() "ExpensiveDetail"])1 ExpensiveDetail 是重复表的名字 转载于:https://www.cnblog…

linux怎么将进程调优到8,Linux的性能调优命令

性能调优一直是运维工程师最重要的工作之一&#xff0c;如果您所在的生产环境中遇到了系统响应速度慢&#xff0c;硬盘IO吞吐量异常&#xff0c;数据处理速度低于预期值的情况&#xff0c;又或者如CPU、内存、硬盘、网络等系统资源长期处于耗尽的状态&#xff0c;那么这篇文章将…

LeetCode 161. 相隔为 1 的编辑距离(DP/遍历)

文章目录1. 题目2. 解题2.1 DP超时2.2 一次遍历1. 题目 给定两个字符串 s 和 t&#xff0c;判断他们的编辑距离是否为 1。 注意&#xff1a; 满足编辑距离等于 1 有三种可能的情形&#xff1a; 往 s 中插入一个字符得到 t从 s 中删除一个字符得到 t在 s 中替换一个字符得到 …

Google搜索图片时只显示第一页

用Google搜索图片时出现&#xff0c;只显示第一页&#xff0c;其他页不能显示。 Method 1:未成功。 Method 2:成功。 结果图&#xff1a; 转载于:https://www.cnblogs.com/yfl-IT/archive/2012/06/19/2555429.html

pxe自动部署Linux,Kickstart+PXE自动部署CentOS6.6

生产环境中对于部署大量的相同系统的服务器&#xff0c;如果逐台安装操作系统的话是非常浪费时间的工作&#xff0c;还好CentOS提供了无人值守安装系统的功能&#xff0c;下面就详细介绍一下配置步骤。一、配置本机的yum源因为需要安装一些软件来达到我们的目的&#xff0c;所以…

LeetCode 247. 中心对称数 II(DP)

文章目录1. 题目2. 解题1. 题目 中心对称数是指一个数字在旋转了 180 度之后看起来依旧相同的数字&#xff08;或者上下颠倒地看&#xff09;。 找到所有长度为 n 的中心对称数。 示例 : 输入: n 2 输出: ["11","69","88","96"]来…

重新排列参数

重新排列参数 重新排列参数操作可以使你重新排列方法、索引器中的参数。你将方法的参数重新排列后&#xff0c;所有使用该方法的地方都会相应调整。以下面代码为例&#xff1a; class Person{public void Print(string name, int age, bool sex){}}class Program{static void M…

LeetCode 251. 展开二维向量

文章目录1. 题目2. 解题1. 题目 请设计并实现一个能够展开二维向量的迭代器。该迭代器需要支持 next 和 hasNext 两种操作。、 示例&#xff1a; Vector2D iterator new Vector2D([[1,2],[3],[4]]);iterator.next(); // 返回 1 iterator.next(); // 返回 2 iterator.next();…

LeetCode 253. 会议室 II(贪心+优先队列)

文章目录1. 题目2. 解题1. 题目 给定一个会议时间安排的数组&#xff0c;每个会议时间都会包括开始和结束的时间 [[s1,e1],[s2,e2],…] (si < ei)&#xff0c; 为避免会议冲突&#xff0c;同时要考虑充分利用会议室资源&#xff0c;请你计算至少需要多少间会议室&#xff0…

笨鸟学Android开发(1):HelloWorld

全程视频&#xff08;IE等浏览器中若看不到以下GIF动画&#xff0c;请下载观看&#xff09; 源代码 转载于:https://www.cnblogs.com/beta2013/archive/2012/06/28/3377298.html

LeetCode 254. 因子的组合(回溯)*

文章目录1. 题目2. 解题1. 题目 整数可以被看作是其因子的乘积。 例如&#xff1a;8 2 x 2 x 2; 2 x 4.请实现一个函数&#xff0c;该函数接收一个整数 n 并返回该整数所有的因子组合。 注意&#xff1a; 你可以假定 n 为永远为正数。 因子必须大于 1 并且小于 n。示例 1&a…

使用架构(XSD)验证XML文件

假使说XML是一个数据库&#xff0c;那么XSD就是这个数据库的结构。由此可见&#xff0c;XSD是如此重要&#xff0c;如果没有它&#xff0c;我们如何声明以及验证我们需要的XML数据文件的格式和合法性呢&#xff1f;那是不可能完成的任务&#xff0c;如果你将XML数据文件当作普通…