leetcode 484. Find Permutation 思维题
https://leetcode.com/contest/leetcode-weekly-contest-16a/problems/find-permutation/
设原本的数字是0,那么按照它的DI来模拟,D就减1,I就+1
比如DDIIDI,就是0、-1、-2、-1、0、-1、0
那么找到第一个最小的,现在是-2,那么把它安排去第一个没出现过的数字,也就是1了,
然后,它左边的全部,就要确定了,3、2、1
然后再把[4, en]继续这样模拟。
需要注意的是,遇到一个I,就马上停止了,不然DDDIIIIDDDDDDDDDDD这样 的数据会hack。其实停止也很正常,也就是因为是上升了,是有很多种情况的,首先把前面的贪心优先字典树最小后再说,I的话,可以设置成很大也没问题,字典序已经是最有了。
class Solution {
public:
vector<int> findPermutation(string s) {
vector<int> t;
vector<int> ans;
ans.push_back();
t.push_back();
for (int i = ; i < s.size(); ++i) {
if (s[i] == 'D') t.push_back(t[i] - );
else t.push_back(t[i] + );
ans.push_back();
}
int want = ;
int be = , en = t.size() - ;
while (want <= s.size() + ) {
int pos = tofind(t, be, en);
for (int i = pos; i >= be; --i) {
ans[i] = want++;
}
be = pos + ;
}
return ans;
}
int tofind(vector<int> &num, int be, int en) {
int now = 1e9;
int id = be;
for (int i = be; i <= en; ++i) {
if (i - >= be && num[i] > num[i - ]) return id;
if (now > num[i]) {
id = i;
now = num[i];
}
}
return id;
}
};
leetcode 484. Find Permutation 思维题的更多相关文章
- [LeetCode] 267. Palindrome Permutation II 回文全排列 II
Given a string s, return all the palindromic permutations (without duplicates) of it. Return an empt ...
- zoj 3778 Talented Chef(思维题)
题目 题意:一个人可以在一分钟同时进行m道菜的一个步骤,共有n道菜,每道菜各有xi个步骤,求做完的最短时间. 思路:一道很水的思维题, 根本不需要去 考虑模拟过程 以及先做那道菜(比赛的时候就是这么考 ...
- cf A. Inna and Pink Pony(思维题)
题目:http://codeforces.com/contest/374/problem/A 题意:求到达边界的最小步数.. 刚开始以为是 bfs,不过数据10^6太大了,肯定不是... 一个思维题, ...
- ZOJ 3829 贪心 思维题
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...
- [array] leetcode - 31. Next Permutation - Medium
leetcode - 31. Next Permutation - Medium descrition Implement next permutation, which rearranges num ...
- 洛谷P4643 [国家集训队]阿狸和桃子的游戏(思维题+贪心)
思维题,好题 把每条边的边权平分到这条边的两个顶点上,之后就是个sb贪心了 正确性证明: 如果一条边的两个顶点被一个人选了,一整条边的贡献就凑齐了 如果分别被两个人选了,一作差就抵消了,相当于谁都没有 ...
- LeetCode 31 Next Permutation / 60 Permutation Sequence [Permutation]
LeetCode 31 Next Permutation / 60 Permutation Sequence [Permutation] <c++> LeetCode 31 Next Pe ...
- C. Nice Garland Codeforces Round #535 (Div. 3) 思维题
C. Nice Garland time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记
PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...
随机推荐
- OpenJudge百炼习题解答(C++)--题3142:球弹跳高度的计算
题: 总时间限制: 1000ms 内存限制: 65536kB 描写叙述 一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半.再落下. 编程计算气球在第10次落地时,共经过多少米? ...
- RxJava系列之中的一个 初识Rxjava
1.简单介绍 基础知识 响应式代码的基本组成部分是Observables和Subscribers(事实上Observer才是最小的构建块,但实践中使用最多的是Subscriber.由于Subscrib ...
- java读取Excel表格中的数据
1.需求 用java代码读取hello.xls表格中的数据 2.hello.xls表格 3.java代码 package com.test; import java.io.File; import j ...
- Android 怎样在java/native层改动一个文件的权限(mode)与用户(owner)?
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载.但请保留文章原始出处: CSDN:http://www.csdn.net ...
- win7 32位下安装MySQL出现的---1067系统错误---问题及解决
每次安装数据库,总是出现这样那样的问题.如今记录下来,供日后參考咯.... 下载的是解压缩-zip版本号的.安装配置教程參照洪哥笔记文章-<MySQL-5.6.13解压版(zip版)安装配置教程 ...
- 对ASP.NET MVC 的路由一点理解
这个东西,真搞不懂.看了网上的教程和文章,也不懂(也不清楚写那些文章的人自己是否真的懂).只好靠自己一顿乱摸索. 好比说,下面这个路由: //路由1 config.Routes.MapHttpRout ...
- netstat --numeric-ports -a -t -p 排查hadoop主从节点是否建立通信
tcp 通信 [root@hadoop2 logs]# netstat --numeric-ports -a -tActive Internet connections (servers and e ...
- Java 解析excel2003和2007区别和兼容性问题(POI操作)
最近在使用POI对excel操作中发现一些问题,2003和2007的区别还是蛮大的: 2007相关的包: poi-3.9.jar poi-examples-3.8.jar poi-excelant-3 ...
- java元组-泛型
需要组合对象的时候使用元组可以简化代码,不需要每当需要组合类的时候都去创建一个新的对象.单元素就是常见的泛型,可以两个三个到多个元素:元组可以继承:java泛型不能使用基本类型如int long 必须 ...
- 什么是PMU(PMIC)【转】
本文转载自:http://blog.csdn.net/zhenwenxian/article/details/7614537 什么是PMU(PMIC) PMU(power management uni ...