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(0);t.push_back(0);for (int i = 0; i < s.size(); ++i) {if (s[i] == 'D') t.push_back(t[i] - 1);else t.push_back(t[i] + 1);ans.push_back(0);}int want = 1;int be = 0, en = t.size() - 1;while (want <= s.size() + 1) {int pos = tofind(t, be, en);for (int i = pos; i >= be; --i) {ans[i] = want++;}be = pos + 1;}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 - 1 >= be && num[i] > num[i - 1]) return id;if (now > num[i]) {id = i;now = num[i];}}return id;}
};

View Code

转载于:https://www.cnblogs.com/liuweimingcprogram/p/6339213.html

leetcode 484. Find Permutation 思维题相关推荐

  1. 【数字全排列】LeetCode 31. Next Permutation

    LeetCode 31. Next Permutation 参考博客:http://www.cnblogs.com/grandyang/p/4428207.html Solution0:一个偷鸡摸狗的 ...

  2. little w and Soda(思维题)

    链接:https://ac.nowcoder.com/acm/contest/297/A 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  3. 【LeetCode 剑指offer刷题】树题6:28 对称二叉树(101. Symmetric Tree)

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 101. Symmetric Tree /**  * Definition for a binary tree no ...

  4. 【LeetCode 剑指offer刷题】数组题2:57 有序数组中和为s的两个数(167 Two Sum II - Input array is sorted)...

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 57 有序数组中和为s的两个数 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是 ...

  5. 【LeetCode 剑指offer刷题】字符串题6:67 把字符串转成整数

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) 67 把字符串转成整数 题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数. 数值为0或者字符 ...

  6. ZOJ 3829 贪心 思维题

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3829 现场做这道题的时候,感觉是思维题.自己智商不够.不敢搞,想着队友智商 ...

  7. 【LeetCode 剑指offer刷题】树题16:Kth Smallest Element in a BST

    [LeetCode & 剑指offer 刷题笔记]目录(持续更新中...) Kth Smallest Element in a BST Given a binary search tree, ...

  8. yoyo思维题(困难) 组合数学

    问题 B: yoyo思维题(困难) 时间限制: 1 Sec  内存限制: 256 MB 提交: 11  解决: 3 [提交][状态][讨论版][命题人:qianyouyou][Edit] [TestD ...

  9. 1884: 三个家庭(思维题)

    1884: 三个家庭 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 244 Solved: 81 [Submit][Status][Web Board] ...

最新文章

  1. 函数式思维: 利用 Either 和 Option 进行函数式错误处理 类型安全的函数式异常...
  2. NFS Volume Provider(Part II) - 每天5分钟玩转 OpenStack(63)
  3. 计算机的相关配置信息,win7系统查看电脑配置相关信息的方案介绍
  4. 网络传输层之TCP、UDP详解
  5. 本地执行php查看内存占用,查看页面执行php占用内存情况
  6. 【疑难杂症】AiO Runtimes 微软常用运行库合集工具一键式安装全部 Windows 系统必备常用运行库合集,解决各种.dll文件缺失问题
  7. Js实现炫酷仿抖罗盘时钟------Sestid
  8. Turbo码(Turbo Codes)
  9. .NET(C#、VB)APP开发——Smobiler平台控件介绍:AliPay组件
  10. 硬件PCB发热严重,天线信号不良的整改
  11. 不会吧不会吧!不会还有人用破解版origin吧——免费使用OriginPro学习版方法
  12. 详解浏览器事件捕获、冒泡
  13. SSA优化章:SSA优化PID
  14. 区分gym中的gym.make()函数与gym.vector.make()函数
  15. Python Flask Web 框架入门
  16. “Internet来宾帐户”的设置的问题
  17. 坐标系旋转后的点坐标、坐标点旋转后的点坐标
  18. 手机安装python的步骤_手机安装python环境
  19. kpi权重设置原则_HR之家,_绩效考核指标设定的十大原则
  20. Win8安装程序出现2502、2503错误解决方法

热门文章

  1. UpdatePanel 属性学习之 UpdateMode
  2. 每天进步一点点《ML - KNN》
  3. AMI corpus download
  4. 数据库设计方法学概述
  5. leetcode —— 24. 两两交换链表中的节点
  6. pytorch——张量操作与线性回归
  7. 离散余弦变换原理及实现过程【转载】
  8. Multi-thread--提高C++性能的编程技术笔记:多线程内存池+测试代码
  9. Ubuntu16.04下安装Sublime Sublime Text3
  10. 腾讯TI-ONE平台从cos导入数据到jupyterLab失败