LeetCode838. 推多米诺
1. 问题描述


2. 思路
双指针
3. 代码
func pushDominoes(dominoes string) string {
dominoes = "L" + dominoes + "R"
res := ""
for i, j := 0, 1; j < len(dominoes); j++ {
if dominoes[j] == '.' {
continue
}
if i > 0 {
res += string(dominoes[i])
}
middle := j - i - 1
if dominoes[i] == dominoes[j] {
for k := 0; k < middle; k++ {
res += string(dominoes[i])
}
} else if dominoes[i] == 'L' && dominoes[j] == 'R' {
for k := 0; k < middle; k++ {
res += string('.')
}
} else {
for k := 0; k < middle / 2; k++ {
res += string('R')
}
for k := 0; k < middle % 2; k++ {
res += string('.')
}
for k := 0; k < middle / 2; k++ {
res += string('L')
}
}
i = j
}
return res
}
这篇博客介绍了如何运用双指针策略解决LeetCode838题,即推多米诺骨牌的问题。代码中展示了具体的实现细节,通过遍历并判断骨牌状态来决定中间骨牌的翻转方式。
329

被折叠的 条评论
为什么被折叠?



