942、增减字符串匹配——贪心+vector初始化方法

2023-10-26

一、题目描述

942、增减字符串匹配

由范围 [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,则返回其中 任何一个

示例:
输入 s   =   "IDID" \texttt{s = "IDID"} s = "IDID"
输出 [0,4,1,3,2] \texttt{[0,4,1,3,2]} [0,4,1,3,2]

二、题目分析

    (1)题目中明确说明答案数组的元素是 [0, n] 中的元素的某种排列;
    (2)贪心的思想,每次遇到 'I' ,就填充一个当前的最小值,遇到 'D' 就填充一个当前的最大值;
    (3)贪心思想,局部最优以满足全局最优。

三、代码实现

class Solution {
public:
    vector<int> diStringMatch(string s) {
        int i, n = s.size();
        vector<int> ret(n+1);
        int lo = 0, hi = n;
        for(i = 0; i < n; ++i){
            ret[i] = (s[i] == 'I' ? lo++ : hi--); 
        }
        ret[n] = lo;
        return ret;  
    }
};

四、总结

1、回顾一下 vector \texttt{vector} vector 容器的几种初始化操作

序号 初始化方法 说明
v e c t o r < T > v vector<T> v vector<T>v 初始化为空,容器内无元素,对应插入元素操作是 push_back()emplace_back()
v e c t o r < T > v 1 ( n ) vector<T> v_1(n) vector<T>v1(n),
v e c t o r < T > v 1 ( n , v a l ) vector<T> v_1(n, val) vector<T>v1(n,val)
v 1 v_1 v1 包含了 n 个重复的元素,未指定 val 值的时候,初始化元素默认是 0
v e c t o r < T > v 2 { 1 , 2 , 3 , 5 } vector<T>v_2{\{1, 2, 3, 5\}} vector<T>v2{1,2,3,5}
v e c t o r < T > v 2 = { 1 , 2 , 3 , 5 } vector<T>v_2 ={\{1, 2, 3, 5\}} vector<T>v2={1,2,3,5}
预先赋值初始化,
v 2 v_2 v2 包含了初始值个数的元素,每个元素被赋予了对应的初始值。
v e c t o r < T > v 3 ( v 2 ) vector<T>v_3(v_2) vector<T>v3(v2) ,
v e c t o r < T > v 3 ( v 2 . b e g i n ( ) , v 2 . e n d ( ) ) vector<T>v_3(v_2.begin(), v_2.end()) vector<T>v3(v2.begin(),v2.end())
拷贝初始化,
v 3 v_3 v3 中包含有 v 2 v_2 v2 所有元素的副本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

942、增减字符串匹配——贪心+vector初始化方法 的相关文章

随机推荐

  • 离散特征和连续特征混合_混合蛋白和特征

    Java语言的开发人员精通C 和其他包含多重继承的语言 从而使类可以从任意数量的父级继承 多重继承的问题之一是无法确定派生自哪个父继承功能 这个问题称为菱形问题 请参阅参考资料 多重继承中固有的菱形问题和其他复杂性启发了Java语言设计人员
  • Docker 进入启动容器

    在使用 d参数时 容器启动后会进入后台 用户无法看到容器中的信息 也无法进行操作 这个时候如果需要进入容器进行操作 有多种方法 包括使用官方的attach或exec命令 以及第三方的nsenter工具等 1 attach命令 attach命
  • Linux下载及配置

    方法一 我们可以来到vm ware的官网 下载一个vm ware16 pro的模拟器 之后在下载完vm ware之后 我们可以去到centOS的官网 下载一个centOS 当然你也可以选择其他的linux的发行版 当然官网的下载速度是很慢的
  • MATLAB 绘制动态正弦函数

    一 动态正弦函数 动态正弦函数 二 MATLAB 绘制动态正弦函数代码 clear clc close all Np 100 空间点数 dx 2 pi Np 步长 x 0 dx 6 pi x 范围 f1sin sin x f1cos cos
  • LVGL视频课程更新啦,基于lvgl v8.2版本,课程适配多个平台、多款板子

    视频教程观看 百问网LVGL v8 系列课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 百问网LVGL v8 视频课程 韦东山 监制 教程基于lvgl v8 2版本 课程适配多个平台 多款板子 视频学习地址
  • mysql集群 配置Keepalived+mm

    集团公司已经在oracle方向有成熟的几十套环境 但是为了节约成本 要尝试下mysql下面先用两台linux x86 Red Hat Enterprise Linux Server release 5 4 Tikanga 和linux6 3
  • O-RAN专题系列-37:管理面-WG4.MP.V07-规范解读-第3章-启动安装流程:NETCONF会话的建立、维护、关闭

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 122498392 目录 第3章 Sta
  • 计算机硬件基础——第一章:计算机系统概述

    目录 计算机发展历史 第一代 电子管计算机时代 1946 1957 其主要特点是采用电子管作为基本器件 第二代 晶体管计算机时代 1958 1964 这时期计算机的主要器件逐步由电子管改为晶体管 第三代 集成电路计算机时代 1965 197
  • 旧视频调整为4k视频提高分辨率Topaz Video Enhance AI

    Topaz Video Enhance AI是Mac上的提升视频分辨率的工具 也是拍摄出色画面 并将其变得完美方法 借助软件Topaz Video Enhance AI 可以将您的素材从标清转换为高清 并不会发生模糊 且会得到质量的提升 非
  • Java并发编程系列 - 互斥锁:解决原子性问题

    Java并发编程系列 互斥锁 解决原子性问题 原子的意思代表着 不可分 那么如果我们要保证原子性就必须满足 同一时刻只有一个线程执行 称之为互斥 如果我们能够保证对 共享变量的修改是互斥的 那么 无论是单核 CPU 还是多核 CPU 就都能
  • Elasticsearch框架基础概念

    Elasticsearch ES 是一个基于Lucene构建开源分布式搜索引擎并提供Restful接口 Es是一个分布式文档数据库 JSON数据格式存储 类似MongoDB JSON中的每个字段数据都可作为搜索条件 并且能够扩展至数以百计的
  • Mysql查询数据库表中前几条记录

    Mysql查询数据库表中前几条记录问题 我想好多朋友也会碰到 下面我简单的说下我遇到的情况 且解决方法 希望对好多朋友有许多帮助 下面是我数据库test中表student的数据 其中第二条记录被我删除了 在查询分析器中输入select fr
  • Deep Learning:基于pytorch搭建神经网络的花朵种类识别项目(内涵完整文件和代码)—超详细完整实战教程

    基于pytorch的深度学习花朵种类识别项目完整教程 内涵完整文件和代码 相关链接 超详细 CNN卷积神经网络教程 零基础到实战 大白话pytorch基本知识点及语法 项目实战 文章目录 基于pytorch的深度学习花朵种类识别项目完整教程
  • Java集合 —— Map集合

    目录 1 Map接口和Collection接口的不同 2 Map集合的特点 3 Map集合的功能 4 HashMap原理 谈谈你对HashMap的理解 HashMap的数据插入原理是怎样的 5 HashTable特点 6 LinkedHas
  • Unity游戏开发 怪物巡逻AI

    今天实现的内容是怪物AI 看了一些网上的AI 不是特别符合我的需求 于是就自己研究了一种AI 大致和魔兽类的RPG游戏效果差不多 AI效果如下 1 将怪物分为如下几个状态 待机状态 该状态内有3种行为 原地呼吸 原地观察 和游走 可通过权重
  • 汇编语言(王爽第三版)实验九

    实验九 题目与个人思路 编程 在屏幕中间分别显示绿色 绿底红色 白底蓝色的字符串 welcome to masm 在80 25彩色字符模式下 显示器可以显示25行 每行80个字符 根据题意大致效果如下图所示 11行的起始地址计算10 80
  • C语言典型例题二——杨辉三角

    C语言典型例题二 杨辉三角 杨辉三角 C语言中的位运算有哪些操作符 杨辉三角 1 杨辉三角最本质的特征是 它的两条斜边都是由数字1组成的 而其余的数则是等于它肩上的两个数之和 这就是我们用C语言写杨辉三角的关键之一 杨辉三角是一种数学工具
  • Android Looper原理源码分析

    概要 在很久以前的时候转载了一小篇文章 Android Message Queue Message Looper Handler 白话介绍了一下Android Message Queue Looper Handler这几个概念之间的关系 其
  • windows下 mysql忘记root的密码怎么办

    如果mysql忘记密码无法登入 可以通过绕开输入密码登入的方式进行修改 步骤如下 1 右击 此电脑 点击 管理 打开 计算机管理 点击 服务与应用程序 点击 服务 2 找到mysql 先右击停用 再次右击mysql的打开属性对话框 3 在属
  • 942、增减字符串匹配——贪心+vector初始化方法

    文章目录 一 题目描述 二 题目分析 三 代码实现 四 总结 1 回顾一下 vector texttt vector vector 容器的几种初始化操作 一 题目描述 942 增减字符串匹配 由范围 0 n 内所有整数组成的 n