news 2026/9/2 23:09:18

leetcode 838. Push Dominoes 推多米诺

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
leetcode 838. Push Dominoes 推多米诺

Problem: 838. Push Dominoes 推多米诺

解题过程

首先要正序遍历一次,拿到每个’.‘左侧的字符LR和索引,然后倒序遍历一次,拿到每个’.‘右侧的字符LR和索引。最后对每个’.',判断左右两侧字符,以及距离的,决定赋值L还是R或者不变的

Code

class Solution { public: string pushDominoes(string dominoes) { int n = dominoes.size(); // vector<bool> status(n, false); dominoes = "L" + dominoes + "R"; string ret = dominoes; pair<char, int> pre; vector<pair<char, int>> left(n+2); for(int i = 0; i <= n + 1; i++) { if(dominoes[i]!='.') { pre = {dominoes[i], i}; } else { left[i] = pre; } } char cl, cr; int disL, disR; for(int i = n+1; i >= 0; i--) { if(dominoes[i]!='.') { pre = {dominoes[i], i}; } else { // right[i] = pre; cl = left[i].first; cr = pre.first; disL = i - left[i].second; disR = pre.second - i; if(cl=='R' && cr=='L') { if( disR > disL ) { ret[i] = 'R'; } else if( disR < disL ) { ret[i] = 'L'; } } else if(cl=='R' && cr=='R') { ret[i] = 'R'; } else if(cl=='L' && cr=='L') { ret[i] = 'L'; } } } ret = ret.substr(1, n); return ret; // dominoes = "." + dominoes + "."; // unordered_map<int, char> ump; // for(int i = 1; i <= n; i++) { // if(dominoes[i]!='.') { // status[i] = true; // } else { // if( dominoes[i-1]=='R' && dominoes[i+1]=='L' ) { // status[i] = true; // } else if( dominoes[i-1]=='L' && dominoes[i+1]=='R' ) { // status[i] = true; // } else if(dominoes[i-1]=='R') { // status[i] = true; // ump[i] = 'R'; // } else if(dominoes[i+1]=='L') { // status[i] = true; // ump[i] = 'L'; // } // } // } // for(auto &&[i, c] : ump) { // dominoes[i] = c; // } // while(true) { // unordered_map<int, char> ump; // for(int i = 1; i <= n; i++) { // if(status[i] == false && dominoes[i] == '.') { // if( dominoes[i-1]=='R' && dominoes[i+1]=='L' ) { // status[i] = true; // } else if( dominoes[i-1]=='L' && dominoes[i+1]=='R' ) { // status[i] = true; // } else if(dominoes[i-1]=='R') { // status[i] = true; // ump[i] = 'R'; // } else if(dominoes[i+1]=='L') { // status[i] = true; // ump[i] = 'L'; // } // } // } // if(ump.size() == 0) break; // for(auto &&[i, c] : ump) { // dominoes[i] = c; // } // } // dominoes = dominoes.substr(1, n); // return dominoes; } };
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 22:44:31

Dify平台接入Sonic模型提供低代码数字人生成服务

Dify平台集成Sonic模型实现低代码数字人生成 在短视频内容爆炸式增长的今天&#xff0c;越来越多的企业和创作者面临一个共同挑战&#xff1a;如何以更低的成本、更快的速度生产高质量的视频内容&#xff1f;尤其是在在线教育、电商直播、政务发布等需要“真人出镜”的场景中&a…

作者头像 李华
网站建设 2026/9/2 21:56:44

Sonic与Raspberry Pi摄像头联动实现语音问答机器人

Sonic与Raspberry Pi摄像头联动实现语音问答机器人 在智能硬件日益普及的今天&#xff0c;我们不再满足于“听得到但看不见”的语音助手。当孩子对着平板问“太阳为什么发光”时&#xff0c;如果屏幕上的虚拟老师不仅能回答问题&#xff0c;还能张嘴说话、眨眼微笑——这种拟人…

作者头像 李华
网站建设 2026/9/2 21:56:24

Sonic数字人粤语生成尝试:部分音节仍需优化

Sonic数字人粤语生成尝试&#xff1a;部分音节仍需优化 在短视频与虚拟内容爆发式增长的今天&#xff0c;如何快速、低成本地制作一个“会说话”的数字人&#xff0c;已成为许多创作者和企业的刚需。传统依赖3D建模与动捕技术的方案虽然精细&#xff0c;但流程复杂、成本高昂&a…

作者头像 李华
网站建设 2026/9/2 22:45:56

uniapp+springboot安卓的校园生活信息服务APP小程序

目录摘要项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作摘要 该校园生活信息服务APP基于UniApp和SpringBoot技术栈开发&#xff0c;旨在为高校学生提供一站式的校园生活…

作者头像 李华
网站建设 2026/9/3 1:23:30

GCC 和 LLVM 各自的优缺点

GCC 和 LLVM 各自的优缺点 本文来自于我关于 ARM 汇编指令系列文章。欢迎阅读、点评与交流~ 1、GCC是什么&#xff1f; 2、LLVM是什么&#xff1f; 3、GCC 和 LLVM 各自的优缺点 GCC 和 LLVM 是现代编译工具链的两大支柱&#xff0c;它们之间的竞争极大地推动了整个领域的发展。…

作者头像 李华
网站建设 2026/9/2 22:43:25

云端部署Sonic需要注意哪些风险?加密传输很重要

云端部署Sonic的风险与加密传输的必要性 在虚拟主播、在线教育和电商直播日益普及的今天&#xff0c;内容生产正朝着自动化、智能化方向加速演进。基于音频驱动的说话数字人技术成为提升效率的关键工具&#xff0c;而腾讯联合浙江大学推出的 Sonic 模型&#xff0c;正是这一趋势…

作者头像 李华