[leetcode] 推多米诺 双指针

简介: 一开始想多了,像成了真实生活中的那种会叠加的状态,就比如"RRL"中,左边的两个"R"会让第三个"L"向右边倾斜,直接用 前缀和 进行操作,但是发现示例1都无法通过,所以说是错的正确的想法是,每一个暂未确定状态的’.‘都由这个字符两侧最相近的字符确定“R…R” 一定是 “RRRRRRRR”,"L…L"同理而对于:“L…R"一定是"L…R”而对于:"R…L"会变成"RRR(.)LLL"两侧往中间挤的情况下,要记得中间的长度是奇数还是偶数进行确定是否有’.’

题目链接


492becb0b2564026b00a67b082f31085.png

一开始想多了,像成了真实生活中的那种会叠加的状态,就比如"RRL"中,左边的两个"R"会让第三个"L"向右边倾斜,直接用 前缀和 进行操作,但是发现示例1都无法通过,所以说是错的


正确的想法是,每一个暂未确定状态的’.‘都由这个字符两侧最相近的字符确定

“R…R” 一定是 “RRRRRRRR”,"L…L"同理

而对于:

“L…R"一定是"L…R”

而对于:

"R…L"会变成"RRR(.)LLL"两侧往中间挤的情况下,要记得中间的长度是奇数还是偶数进行确定是否有’.’


Code:


class Solution {
public:
    string pushDominoes(string dominoes) {
        string ans = "";
        dominoes = "L" + dominoes + "R";// for the case of "......"
        int left = 0;
        for(int r=1;r<dominoes.length();r++) {
            if(dominoes[r] == '.') continue;
            if(left != 0) ans.push_back(dominoes[left]);
            int len = r - left - 1;
            if(dominoes[left] == dominoes[r]) {
                ans += string(len, dominoes[r]);
            }else if(dominoes[left] == 'L' && dominoes[r] == 'R') {
                ans += string(len, '.');
            }else{
                ans += string(len >> 1,'R');
                if(len&1) ans.push_back('.');
                ans += string(len >> 1,'L');
            }
            left = r;
        }
        return ans;
    }
};


文章知识点与官方知识档案匹配,可进一步学习相关知识

算法技能树leetcode-动态规划22-括号生成8235 人正在系统学习中

目录
相关文章
|
2月前
|
Python
【Leetcode刷题Python】138. 复制带随机指针的链表
LeetCode上题目“138. 复制带随机指针的链表”的Python解决方案,包括两种方法:一种是在每个节点后复制一个新节点然后再分离出来形成新链表;另一种是构建一个字典来跟踪原始节点与其副本之间的映射关系,从而处理新链表的构建。
14 1
|
4月前
|
索引
力扣每日一题 6/17 枚举+双指针
力扣每日一题 6/17 枚举+双指针
24 1
|
4月前
|
存储 算法 数据可视化
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
【模拟面试问答】深入解析力扣163题:缺失的区间(线性扫描与双指针法详解)
|
4月前
|
算法 数据挖掘 Java
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
深入解析力扣167题:两数之和 II(双指针法详解及模拟面试问答)
|
4月前
|
存储 算法 数据挖掘
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
【模拟面试问答】力扣165题:比较版本号(逐个比较与双指针法详解及模拟面试问答)
|
4月前
|
存储 算法 数据可视化
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
深入解析力扣160题:相交链表的解决方法(哈希表法与双指针法详细图解)
|
5月前
|
算法
[优选算法]——双指针——Leetcode——1089. 复写零
[优选算法]——双指针——Leetcode——1089. 复写零
|
4月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
|
4月前
|
算法 容器
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和
【经典LeetCode算法题目专栏分类】【第1期】左右双指针系列:盛最多水的容器、接雨水、回文子串、三数之和
|
4月前
|
存储 算法 大数据
深入解析力扣170题:两数之和 III - 数据结构设计(哈希表与双指针法详解及模拟面试问答)
深入解析力扣170题:两数之和 III - 数据结构设计(哈希表与双指针法详解及模拟面试问答)