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中的数 ...
随机推荐
- 将Python打印的内容进行高亮的输出
将打印的内容进行高亮的显示 内容: 格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m" 例如: "\033[41;36m something he ...
- YII获取当前URL
<?php //当前域名 echoYii::app()->request->hostInfo; //除域名外的URL echoYii::app()->request ...
- Android-support-v4源码查看
- Oracle修改序列(Sequence)起始值问题
Oracle 序列(Sequence)主要用于生成流水号,在应用中经常会用到,特别是作为ID值,拿来做表主键使用较多. 但是,有时需要修改序列初始值(START WITH)时,有同仁使用这个语句来修改 ...
- CXF+Spring+Tomcat 案例
多系统(异构系统)进行交互时,一种良好的方式便是调用Web Service,本示例基于Apache组织的CXF 环境:EclipseJDK6Tomcat6CXF2.6.1Spring3 示例项目结构图 ...
- css3动画应用-音乐唱片旋转播放特效
css3动画应用-音乐唱片旋转播放特效 核心点: 1.设置图片为圆形居中,使图片一直不停旋转. 2.文字标题(潘玮柏--反转地球)一直从左到右不停循环移动. 3.点击图标,音乐暂停,图片停止旋转:点击 ...
- 风云流水 jQuery技巧总结 (转)
jQuery技巧总结 (转) 一.简介 1.1.概述 随着WEB2.0及ajax思想在互联网上的快速发展传播,陆续出现了一些优秀的Js框架,其中比较著名的有Prototype.YUI.jQuery.m ...
- 【T^T 1736】【FJUTOJ 1077】排座位
http://59.77.139.92/problem.php?id=1077 水题,小心PE // <1736.cpp> - 11/12/16 17:17:52 // This file ...
- POJ - 2418 Hardwood Species(map,trie,BST)
1.输入若干行树名,输入结束后,按字典序输出树名及其所占百分比. 2.多种方法:map,trie,BST 3. map: #include<iostream> #include<st ...
- Ubuntu Bochs boot.asm 测试
/********************************************************************* * Ubuntu Bochs boot.asm 测试 * ...