特斯拉一面算法原题
来自太空的 X 帖子
埃隆·马斯克(Elon Musk)旗下太空探索技术公司 SpaceX 于 2 月 26 号,从太空往社交平台 X(前身为推特,已被马斯克全资收购并改名)发布帖子。
这是 SpaceX 官号首次通过星链来发送 X 帖子,马斯克对此表示祝贺和肯定。
对于此事,马斯克多次强调:"该帖子是由 SpaceX 从一部普通手机直接发到卫星上的,中间没有任何特殊设备!"
...
回到主线。
来做一道和「特斯拉」相关的面试算法题。
题目描述
平台:LeetCode
题号:777
在一个由 'L' ,'R' 和 'X' 三个字符组成的字符串(例如 "RXXLRXRXL")中进行移动操作。
一次移动操作指用一个 "LX" 替换一个 "XL",或者用一个 "XR" 替换一个 "RX"。
现给定起始字符串 start 和结束字符串 end,请编写代码,当且仅当存在一系列移动操作使得 start 可以转换成 end 时, 返回 True。
示例 :
输入: start = "RXXLRXRXL", end = "XRLXXRRLX"
输出: True
解释:
我们可以通过以下几步将start转换成end:
RXXLRXRXL ->
XRXLRXRXL ->
XRLXRXRXL ->
XRLXXRRXL ->
XRLXXRRLX
提示:
-
-
start和end中的字符串仅限于'L','R'和'X'
双指针
根据题意,我们每次移动要么是将 XL 变为 LX,要么是将 RX 变为 XR,而该两者操作可分别看做将 L 越过多个 X 向左移动,将 R 越过多个 X 向右移动。
因此在 start 和 end 中序号相同的 L 和 R 必然满足坐标性质:
-
序号相同的 L:start的下标不小于end的下标(即L不能往右移动) -
序号相同的 R:start的下标不大于end的下标(即R不能往左移动)
其中「序号」是指在 LR 字符串中出现的相对顺序。
Java 代码:
class Solution {
public boolean canTransform(String start, String end) {
int n = start.length(), i = 0, j = 0;
while (i < n || j < n) {
while (i < n && start.charAt(i) == 'X') i++;
while (j < n && end.charAt(j) == 'X') j++;
if (i == n || j == n) return i == j;
if (start.charAt(i) != end.charAt(j)) return false;
if (start.charAt(i) == 'L' && i < j) return false;
if (start.charAt(i) == 'R' && i > j) return false;
i++; j++;
}
return i == j;
}
}
C++ 代码:
class Solution {
public:
bool canTransform(string start, string end) {
int n = start.size();
int i = 0, j = 0;
while (i < n || j < n) {
while (i < n && start[i] == 'X') i++;
while (j < n && end[j] == 'X') j++;
if (i == n || j == n) return i == j;
if (start[i] != end[j]) return false;
if (start[i] == 'L' && i < j) return false;
if (start[i] == 'R' && i > j) return false;
i++; j++;
}
return i == j;
}
};
Python 代码:
class Solution:
def canTransform(self, start: str, end: str) -> bool:
i, j, n = 0, 0, len(start)
while i < n or j < n:
while i < n and start[i] == 'X': i += 1
while j < n and end[j] == 'X': j += 1
if i == n or j == n: return i == j
if start[i] != end[j]: return False
if start[i] == 'L' and i < j: return False
if start[i] == 'R' and i > j: return False
i, j = i + 1, j + 1
return i == j
TypeScript 代码:
function canTransform(start: string, end: string): boolean {
let n = start.length;
let i = 0, j = 0;
while (i < n || j < n) {
while (i < n && start.charAt(i) === 'X') i++;
while (j < n && end.charAt(j) === 'X') j++;
if (i === n || j === n) return i === j;
if (start.charAt(i) !== end.charAt(j)) return false;
if (start.charAt(i) === 'L' && i < j) return false;
if (start.charAt(i) === 'R' && i > j) return false;
i++; j++;
}
return i === j;
};
-
时间复杂度: -
空间复杂度:
我是宫水三叶,每天都会分享算法知识,并和大家聊聊近期的所见所闻。
欢迎关注,明天见。
更多更全更热门的「笔试/面试」相关资料可访问排版精美的 合集新基地 🎉🎉
相关文章:
特斯拉一面算法原题
来自太空的 X 帖子 埃隆马斯克(Elon Musk)旗下太空探索技术公司 SpaceX 于 2 月 26 号,从太空往社交平台 X(前身为推特,已被马斯克全资收购并改名)发布帖子。 这是 SpaceX 官号首次通过星链来发送 X 帖子&a…...
【Leetcode每日一题】二分查找 - 山脉数组的峰顶索引(难度⭐⭐)(23)
1. 题目解析 Leetcode链接:852. 山脉数组的峰顶索引 这个问题的理解其实相当简单,只需看一下示例,基本就能明白其含义了。 核心在于找到题目中所说的峰值所在的下标并返回他们的下标即可。 2. 算法原理 峰顶及两侧数据特点分析 峰顶数据…...
Linux添加用户分组练习
一、复制/etc/skel目录为/home/tuser1(/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限)。 cp -a /etc/skel /home/tuser1 chown -R tuser1:tuser1 /home/tuser1 chmod -R 700 /home/tuser1 二、编辑/etc/group文件,添加组h…...
云快充充电桩系统设计书
充电桩系统设计书 一、系统设计概述 随着新能源汽车市场的快速发展,充电桩作为电动汽车的重要配套设施,其市场需求日益增长。本系统旨在提供一套稳定、高效、易用的充电桩解决方案,以满足市场上新能源充电桩的主流需求。通过实现云快充V1.6协…...
oracle DG 原理
在Oracle中,什么是DG?DG有哪些优缺点? DG(Data Guard,数据卫士)不是一个备份恢复的工具,然而,DG却拥有备份的功能,在物理DG下它可以和主库一模一样,但是它存…...
MySQL篇—持久化和非持久化统计信息介绍(第一篇,总共三篇)
☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…...
Leetcode—65. 有效数字【困难】
2024每日刷题(118) Leetcode—65. 有效数字 实现代码 class Solution { public:bool isNumber(string s) {if(s.empty()) {return false;}bool seenNum false;bool seenE false;bool seenDot false;for(int i 0; i < s.size(); i) {switch(s[i]…...
【Java程序设计】【C00322】基于Springboot的高校竞赛管理系统(有论文)
基于Springboot的高校竞赛管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校竞赛管理系统,本系统有管理员、老师、专家以及用户四种角色; 管理员:首页、个人中心、管…...
41、网络编程/TCP.UDP通信模型练习20240301
一、编写基于TCP的客户端实现以下功能: 通过键盘按键控制机械臂:w(红色臂角度增大)s(红色臂角度减小)d(蓝色臂角度增大)a(蓝色臂角度减小)按键控制机械臂 1.基于TCP服务器的机械臂…...
Python中操作MySQL和SQL Server数据库的基础与实战【第97篇—MySQL数据库】
Python中操作MySQL和SQL Server数据库的基础与实战 在Python中,我们经常需要与各种数据库进行交互,其中MySQL和SQL Server是两个常见的选择。本文将介绍如何使用pymysql和pymssql库进行基本的数据库操作,并通过实际代码示例来展示这些操作。…...
【兔子机器人】五连杆运动学解算与VMC(virtual model control)
VMC (virtual model control,虚拟模型控制) 是一种直觉控制方式,其关键是在每个需要控制的自由度上构造恰当的虚拟构件以产生合适的虚拟力。虚拟力不是实际执行机构的作用力或力矩,而是通过执行机构的作用经过机构转换而成。对于一些控制问题…...
学习鸿蒙基础(6)
一、Prop属性 父——>子 单向同步 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。Prop装饰的变量和父组件建立单向的同步关系。Prop变量允许在本地修改,但修改后的变化不会同步回父组件。当父组…...
标准PoE交换机、非标准PoE交换机和非PoE交换机三者到底有何区别?
目录 前言: 一、标准PoE交换机 1.1 工作原理 1.2 应用场景 1、视频监控 2、无线接入点 3、IP电话 1.3 优势 1、简化布线 2、简化安装 3、提高可靠性 二、非标准PoE交换机 2.1 工作原理 2.2 应用场景 1、无线路由器 2、IP电话 3、数据中心 2.3 优势…...
【软件测试】--功能测试4-html介绍
1.1 前端三大核心 html:超文本标记语言,由一套标记标签组成 标签: 单标签:<标签名 /> 双标签:<标签名></标签名> 属性:描述某一特征 示例:<a 属性名"属性值"> 1.2 html骨架标签 <!DOC…...
模型优化_XGBOOST学习曲线及改进,泛化误差
代码 from xgboost import XGBRegressor as XGBR from sklearn.ensemble import RandomForestRegressor as RFR from sklearn.linear_model import LinearRegression as LR from sklearn.datasets import load_boston from sklearn.model_selection import train_test_split,c…...
Java8 - LocalDateTime时间日期类使用详解
🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默&…...
3D城市模型可视化:开启智慧都市探索之旅
随着科技的飞速发展,我们对城市的认知已经不再局限于平面的地图和照片。今天,让我们领略一种全新的城市体验——3D城市模型可视化。这项技术将带领我们走进一个立体、生动的城市世界,感受前所未有的智慧都市魅力。 3D城市模型通过先进的计算机…...
某查查首页瀑布流headers加密
目标网站: 某查查 对目标网站分析发现 红框内的参数和值都是加密的,是根据算法算出来的,故进行逆向分析。 由于没有固定参数名,只能通过搜索headers,在搜索的位置上打上断点,重新请求。 断点在此处断住&a…...
Microsoft Visio 文本框上标或下标
Microsoft Visio 文本框上标或下标 1. 文本框公式2. 选中需要成为上标或下标的部分,开始 - > 段落 -> 字体 -> 常规 -> 位置 -> 上标 / 下标3. 文本框公式4. 快捷键References 1. 文本框公式 2. 选中需要成为上标或下标的部分,开始…...
Java项目:29 基于SpringBoot+thymeleaf实现的图书管理系统
作者主页:源码空间codegym 简介:Java领域优质创作者、Java项目、学习资料、技术互助 文中获取源码 项目介绍 基于SpringBootthymeleaf实现的图书管理系统分为管理员、读者两个登录角色,一共是8个功能模块 管理员权限 图书管理:…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
模型参数、模型存储精度、参数与显存
模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
DiscuzX3.5发帖json api
参考文章:PHP实现独立Discuz站外发帖(直连操作数据库)_discuz 发帖api-CSDN博客 简单改造了一下,适配我自己的需求 有一个站点存在多个采集站,我想通过主站拿标题,采集站拿内容 使用到的sql如下 CREATE TABLE pre_forum_post_…...
