当前位置: 首页 > news >正文

力扣(LeetCode)2731. 移动机器人(C++)

脑经急转弯+排序

碰撞只改变运动方向,速度始终如"1",且机器人视为无差别的,所以碰撞等于擦肩而过!"机器人碰撞,到底撞没撞,如撞。"因此只考虑每个机器人单方向移动,d秒后停下,即可。

统计所有机器人之间两两距离之和,可以按照贡献法:
一共n个点(机器人),有n-1个间隔(相邻机器人的间距), 每个间隔被统计的次数 = 左侧的点的数量 ( 包含端点 ) ∗ 右侧的点的数量 ( 包含端点 ) 每个间隔被统计的次数=左侧的点的数量(包含端点)*右侧的点的数量(包含端点) 每个间隔被统计的次数=左侧的点的数量(包含端点)右侧的点的数量(包含端点)

排序后,按照贡献法(其实是数学方法hh)统计距离之和,得到答案,本题解决。

class Solution {
public:const int mod = 1e9 + 7;int sumDistance(vector<int>& nums, string s, int d) {for (int i = 0; i < nums.size(); i ++) {if ('L' == s[i]) {nums[i] -= d;} else {nums[i] += d;}}sort(nums.begin(), nums.end());int ans = 0;for (int i = 1; i < nums.size(); i ++) {long long t = ((long long)nums[i]  - (long long)nums[i - 1]) % mod * (i * (nums.size() - i) % mod);ans = (ans + t) % mod;}return ans;}
};
};

时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn) : n n n n u m s nums nums的长度(机器人的数量),排序的时间复杂度 O ( n l o g n ) O(nlogn) O(nlogn)
空间复杂度 O ( n ) O(n) O(n) : 本文原地修改数组,空间瓶颈取决于排序的空间复杂度 O ( l o g n ) O(logn) O(logn)。建议另开一个数组存储机器人的位置,空间复杂度 O ( n ) O(n) O(n)

AC

ac

致语
  • 理解思路很重要
  • 读者有问题请留言,清墨看到就会回复的。
http://www.lryc.cn/news/188549.html

相关文章:

  • vite和webpack
  • MinIO图片正常上传不可查看,MinIO通过页面无法设置桶为public
  • Linux 指令心法(七)`cat` 查看、合并和创建文本文件
  • 解决docker开启MySQL的binlog无法成功。docker内部报错:mysql: [ERROR] unknown variable
  • c,python ,java,c++ c#在控制台打印彩色文本
  • MySQL数据库技术笔记(5)
  • python生成随机数
  • Twitter优化秘籍:置顶、列表、受众增长
  • vscode更改为中文版本
  • 【Linux系统KVM虚拟机实战】LVM逻辑卷之磁盘扩容
  • 史上最全 结构型模式之 桥接 外观 组合 享元模式
  • KBU810-ASEMI高性能整流桥KBU810
  • uniapp快速入门系列(2)- Vue基础知识
  • mac(M1)安装anaconda3
  • vscode远程ssh服务器且更改服务器别名
  • 【算法笔记】LCR 086. 分割回文串
  • centos 安装svn
  • Java中的类加载器双亲委派模型机制
  • [spring] spring jpa - hibernate 名词解释配置
  • java判断字符串是否为时间格式
  • 【Java】什么是API
  • Hazelcast系列(三):hazelcast集成(服务器/客户端)
  • vscode 配置默认shell
  • 品牌低价的形式有哪些
  • SPA项目之主页面--数据表格的增删改查
  • Adobe Premiere Pro:掌控视频剪辑的魔法之手,让你的创作腾飞!
  • ES知识点全面整理
  • 【电商API封装接口】电商百万商品资源一键导入,助力企业流量变现
  • bootz启动 Linux内核过程中涉及的全局变量images
  • Vuex的使用,详细易懂