news 2026/4/6 16:59:46

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/4/1 17:24:12

MyBatisPlus分页插件助力VoxCPM-1.5-TTS-WEB-UI日志查询优化

MyBatisPlus分页插件助力VoxCPM-1.5-TTS-WEB-UI日志查询优化 在AI语音合成系统日益复杂的今天&#xff0c;一个看似不起眼的功能——日志查询&#xff0c;却常常成为压垮用户体验的最后一根稻草。VoxCPM-1.5-TTS-WEB-UI 作为支持高质量声音克隆的文本转语音平台&#xff0c;在用…

作者头像 李华
网站建设 2026/3/27 18:50:35

Reddit社区发起Sonic数字人创意大赛奖金池达万美元

Sonic数字人创意大赛引爆社区&#xff1a;轻量级口型同步技术如何重塑内容创作&#xff1f; 在短视频日活突破十亿、虚拟主播席卷各大平台的今天&#xff0c;一个现实问题始终困扰着内容创作者&#xff1a;如何低成本、高效率地生产高质量的“说话类”视频&#xff1f;传统方案…

作者头像 李华
网站建设 2026/4/1 15:19:00

uniapp+springboot安卓外卖点餐系统 带商家小程序

目录系统概述核心功能模块技术亮点应用价值项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作系统概述 该外卖点餐系统基于UniApp跨平台框架与SpringBoot后端技术开发&…

作者头像 李华
网站建设 2026/4/1 22:46:04

uniapp+springboot餐厅点餐微信小程序_q

目录技术栈概述核心功能模块技术实现亮点应用场景与优势项目技术支持论文大纲核心代码部分展示可定制开发之亮点部门介绍结论源码获取详细视频演示 &#xff1a;文章底部获取博主联系方式&#xff01;同行可合作技术栈概述 UniappSpringBoot餐厅点餐微信小程序采用前后端分离架…

作者头像 李华
网站建设 2026/4/1 20:17:52

Git Commit规范写Sonic项目日志?专业开发者必备

专业开发者如何用 Git Commit 规范管理 Sonic 数字人项目 在 AIGC 内容生产日益工业化、自动化的今天&#xff0c;一个看似简单的“生成会说话的数字人视频”任务&#xff0c;背后往往隐藏着复杂的工程挑战。我们不再满足于“这次跑出一段还不错的动画”&#xff0c;而是越来越…

作者头像 李华
网站建设 2026/4/6 19:46:23

Sonic数字人防伪标识研究:如何辨别AI生成内容?

Sonic数字人防伪标识研究&#xff1a;如何辨别AI生成内容&#xff1f; 在短视频平台每天诞生数百万条“真人出镜”内容的今天&#xff0c;一个令人不安的事实正在浮现&#xff1a;你看到的那个侃侃而谈的讲师、带货主播甚至新闻播报员&#xff0c;可能从未真实存在过。随着AI生…

作者头像 李华