【leetcode】942. DI String Match
2024-10-07 12:06:56
题目如下:
Given a string
S
that only contains "I" (increase) or "D" (decrease), letN = S.length
.Return any permutation
A
of[0, 1, ..., N]
such that for alli = 0, ..., N-1
:
- If
S[i] == "I"
, thenA[i] < A[i+1]
- If
S[i] == "D"
, thenA[i] > A[i+1]
Example 1:
Input: "IDID"
Output: [0,4,1,3,2]Example 2:
Input: "III"
Output: [0,1,2,3]Example 3:
Input: "DDI"
Output: [3,2,0,1]Note:
1 <= S.length <= 10000
S
only contains characters"I"
or"D"
.
解题思路:题目很简单,可以考虑贪心算法。本题有这么一个前提,I的位置一定可以放当前能放的元素中最小的那个,而D的位置一定能放当前能放的元素中最大的那个。所以遍历S,如果是I,放入当前的最小值,同时最小值加一;如果是D,放入当前的最大值,同时最大值减一。
代码如下:
class Solution(object):
def diStringMatch(self, S):
"""
:type S: str
:rtype: List[int]
"""
low = 0
high = len(S) res = []
for i in S:
if i == 'I':
res.append(low)
low += 1
else:
res.append(high)
high -= 1
res.append(low)
return res
最新文章
- keepalived+nginx高可用负载均衡环境搭建
- 19.创建如下三个类:(People类中的三个方法分别输出一些信息,ChinaPeople 和AmericanPeople类重写父类的三个方法)。
- QuickFIX/J常见问题汇总
- messager(消息窗口)
- Android layout_gravity失效的问题
- Android应用程序的Activity启动过程简要介绍和学习计划
- listview滚动到底部
- UML之九图概述
- 关于图计算和graphx的一些思考[转]
- 理解javascript:void(0);和href=";#";
- 流程控制------if else分支语句
- maven的java web项目启动找不到Spring ContextLoaderListener的解决办法
- python爬虫第五天
- 基于Java的ArrayList和LinkedList的实现与总结
- pwnable.tw unexploitable 分析
- js数组元素,获得某个元素的最大值。
- 原生js移除或添加样式
- 让终端走socks5代理
- 五、同一台MySQL服务器启动多个端口-为读写分离做准备
- Hadoop数据分析平台项目实战(基于CDH版本集群部署与安装)
热门文章
- Ubuntu分区小知识与分区方案
- python+selenium自动化框架搭建
- 【leetcode】878. Nth Magical Number
- vfs之mount()
- Struts2基础-3 -继承ActionSupport接口创建Action控制器+javaBean接收请求参数+ 默认Action配置处理请求错误 + 使用ActionContext访问ServletAPI
- Shorten IPv6 Address
- 15 个最佳 jQuery 翻书效果插件
- 1-什么是 Prometheus
- [CSP-S模拟测试]:Star Way To Heaven(最小生成树Prim)
- 【python】 读写文件