LeetCode 2121. 相同元素的间隔之和(前缀和)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

给你一个下标从 0 开始、由 n 个整数组成的数组 arr 。

arr 中两个元素的 间隔 定义为它们下标之间的 绝对差 。更正式地,arr[i] 和 arr[j] 之间的间隔是 |i - j|

返回一个长度为 n 的数组 intervals ,其中 intervals[i] 是 arr[i] 和 arr 中每个相同元素(与 arr[i] 的值相同)的 间隔之和

注意:|x| 是 x 的绝对值。

示例 1:
输入:arr = [2,1,3,1,2,3,3]
输出:[4,2,7,2,4,4,5]
解释:
- 下标 0 :另一个 2 在下标 4|0 - 4| = 4
- 下标 1 :另一个 1 在下标 3|1 - 3| = 2
- 下标 2 :另两个 3 在下标 56|2 - 5| + |2 - 6| = 7
- 下标 3 :另一个 1 在下标 1|3 - 1| = 2
- 下标 4 :另一个 2 在下标 0|4 - 0| = 4
- 下标 5 :另两个 3 在下标 26|5 - 2| + |5 - 6| = 4
- 下标 6 :另两个 3 在下标 25|6 - 2| + |6 - 5| = 5示例 2:
输入:arr = [10,5,10,10]
输出:[5,0,3,4]
解释:
- 下标 0 :另两个 10 在下标 23|0 - 2| + |0 - 3| = 5
- 下标 1 :只有这一个 5 在数组中,所以到相同元素的间隔之和是 0
- 下标 2 :另两个 10 在下标 03|2 - 0| + |2 - 3| = 3
- 下标 3 :另两个 10 在下标 02|3 - 0| + |3 - 2| = 4提示:
n == arr.length
1 <= n <= 10^5
1 <= arr[i] <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/intervals-between-identical-elements
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 按照数字分组
  • 对每组数字的 下标求前缀和,因为对 i 位置前面的可以拆成 i-i前,后面的可以拆成 i后-i
  • 利用前缀和获取同符号的区间的和
class Solution {
public:vector<long long> getDistances(vector<int>& arr) {unordered_map<int,vector<long long>> pos; //  相同数字的位置for(int i = 0; i < arr.size(); ++i)pos[arr[i]].push_back(i); // 数字的各个位置vector<long long> ans(arr.size(), 0);for(auto& p : pos){vector<long long> pp = p.second;for(int i = 1; i < pp.size(); ++i)pp[i] += pp[i-1]; // 各个位置的前缀和int lnum = 0, rnum = p.second.size();for(int i = 0; i < p.second.size(); ++i){lnum = i; // i 左边有的同数字的 个数rnum = p.second.size()-i-1; // 右侧有的个数long long idx = p.second[i]; // 对应原来数组中的位置ans[idx] = pp.back()-pp[i] - idx*rnum + idx*lnum - (i>0 ? pp[i-1] : 0);// a1,a2,... i, ... b1, b2 后半段的都可以拆成 b1-i, b2-i, 个数  rnum个// 前半段 都可以拆成 i-a1, i-a2,... 个数 lnum个// a1, a2, ... 的和用前缀和直接获取// b1, b2, ... 的和用前缀和做差获取}}return ans;}
};

340 ms 131.3 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471359.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jquery中怎么删除ul中的整个li包括节点

1.$(ul li).remove(); 2.$(ul li).each(function(){ $(this).remove(); }); 3.$("ul").find("li").remove(); 4.$(ul).children().filter(li).remove();转载于:https://www.cnblogs.com/zhujiabin/p/5008006.html

在android添加数据采集,一种基于Android系统的地理信息数据采集方法与流程

本方法属于采集地理信息数据的发明&#xff0c;是一种基于android操作系统和gis地理信息系统进行户外地理信息数据采集的方法。背景技术&#xff1a;众所周知地理信息数据采集在很多行业中都有应用&#xff0c;比如说农业中的土地普查、城市管理中的地下管线普查、工业中的地质…

五、MySQL联合查询学习笔记 + 查询总结(详解)

9、 联合查询 union 联合 合并&#xff1a;将多条查询语句的结果合并成一个结果 语法&#xff1a; 查询语句1 UNION 查询语句2 UNION … 应用场景&#xff1a;要查询的结果来自多个表&#xff0c;且多个表之间没有直接的连接关系&#xff0c;但查询的信息相同 特点&#xff…

LeetCode 2124. 检查是否所有 A 都在 B 之前

文章目录1. 题目2. 解题1. 题目 给你一个 仅 由字符 a 和 b 组成的字符串 s 。 如果字符串中 每个 ‘a’ 都出现在 每个 ‘b’ 之前&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 示例 1&#xff1a; 输入&#xff1a;s "aaabbb" 输出&#x…

设计模式—桥接模式

前言 这里以电视遥控器为例子引出桥接模式&#xff0c;首先每个牌子的电视都有一个遥控器&#xff0c;可以设计吧遥控器作为一个抽象类&#xff0c;抽象类中提供遥控器的所有实现&#xff0c;其他具体电视品牌的遥控器都继承这个抽象类 这样的实现使得每个不同型号的电视都有自…

Android8.1怎么装谷歌,谷歌PixelXL安卓9.0/8.1/8.0/7.X安装面具ROOT方案

免费预览&#xff1a;注意1&#xff1a;请提前备份资料&#xff0c;解锁BL会清空所有数据&#xff01;注意2&#xff1a;请提前移除谷歌账户(设置—账户—你的谷歌账户—移除)全套资料在教程末尾1. 解锁BL在手机开机状态下&#xff0c;启用开发者选项并勾选「允许USB调试」和「…

六、MySQL DML数据操纵语言学习笔记(插入、修改、删除详解 + 强化复习)

DML语言 数据操作语言&#xff1a; 插入&#xff1a;insert修改&#xff1a;update删除&#xff1a;delete 一、插入语句 &#xff08;1&#xff09;方式一&#xff1a;经典的插入方式 语法&#xff1a; insert into 表名&#xff08;列名&#xff0c;…&#xff09;values…

LeetCode 2125. 银行中的激光束数量

文章目录1. 题目2. 解题1. 题目 银行内部的防盗安全装置已经激活。 给你一个下标从 0 开始的二进制字符串数组 bank &#xff0c;表示银行的平面图&#xff0c;这是一个大小为 m x n 的二维矩阵。 bank[i] 表示第 i 行的设备分布&#xff0c;由若干 ‘0’ 和若干 ‘1’ 组成。…

2-Second Scrum Meeting-20151202

任务安排 闫昊&#xff1a; 今日完成&#xff1a;设计学习进度的管理。 明日任务&#xff1a;请假。&#xff08;编译计组&#xff0c;压力有点大&#xff09; 金哉仁&#xff1a; 今日完成&#xff1a;继续商讨APP相关界面与设计&#xff0c;安装AndroidStudio。 明日任务&…

android查询所有照片,Android查询外部存储中所有照片

最近写了个自定义相册模块&#xff0c;其中比较核心的算是查询照片了&#xff0c;直接上代码吧val contentUri MediaStore.Files.getContentUri("external")val sortOrder MediaStore.Files.FileColumns.DATE_MODIFIED " DESC"val selection "(${M…

七、MySQL DDL数据定义语言 学习笔记(库和表的创建、修改、删除详解 + 强化复习)

DDL语言 数据定义语言 库和表的管理&#xff1a; 一、库的管理: 创建、修改、删除 二、表的管理: 创建、修改、删除 创建&#xff1a; create 修改&#xff1a; alter 删除&#xff1a; drop 一、库的管理 1、库的创建: 语法&#xff1a; create database [if not exists…

LeetCode 2126. 摧毁小行星(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个整数 mass &#xff0c;它表示一颗行星的初始质量。 再给你一个整数数组 asteroids &#xff0c;其中 asteroids[i] 是第 i 颗小行星的质量。 你可以按 任意顺序 重新安排小行星的顺序&#xff0c;然后让行星跟它们发生碰撞。如果行星…

bzoj:2018 [Usaco2009 Nov]农场技艺大赛

Description Input 第1行&#xff1a;10个空格分开的整数: N, a, b, c, d, e, f, g, h, M Output 第1行&#xff1a;满足总重量最轻&#xff0c;且用度之和最大的N头奶牛的总体重模M后的余数。 Sample Input 2 0 1 5 55555555 0 1 0 55555555 55555555Sample Output 51HINT 样例…

android操作系统+流量,为什么我的安卓操作系统走这么多流量?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是用流量管理软件拦截安卓os偷跑流量的记录&#xff01;国内的软件没个是能拦截系统联网的&#xff01; AppID :-1 应用程序名称:Kernel 总数据包阻塞:170 ff02:0000:0000:0000:0000:0000:0000:0016(1) 163.177.66.11(3) 58.250.…

八、一篇文章快速搞懂MySQL 常见的数据类型(整型、小数、字符型、日期型详解)

常见的数据类型 1、数值型&#xff1a; 整型 小数&#xff1a; 定点数 浮点数 2、字符型&#xff1a; 较短的文本&#xff1a;char、varchar 较长的文本&#xff1a;text、blob&#xff08;较长的二进制数据&#xff09; 3、日期型&#xff1a; 一、整型 1&#xff09;分类…

LeetCode 2129. 将标题首字母大写

文章目录1. 题目2. 解题1. 题目 给你一个字符串 title &#xff0c;它由单个空格连接一个或多个单词组成&#xff0c;每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 &#xff1a; 如果单词的长度为 1 或者 2 &#xff0c;所有字母变成小写。否则&#xf…

九、MySQL常见约束相关知识总结 学习笔记 + 强化复习(六大约束)

常见约束&#xff1a; 一、含义&#xff1a;一种限制&#xff0c;用于限制表中的数据&#xff0c;为了保证表中的数据的准确和可靠性 二、分类&#xff1a;六大约束 1、NOT NULL&#xff1a;非空&#xff0c;用于保证该字段的值不能为空 比如姓名、学号等 2、DEFAULT:默认&…

html 获取鼠标在canvas上的坐标,html5-canvas 检测鼠标在画布上的位置

示例本示例将说明如何获取鼠标相对于画布的位置&#xff0c;例如(0,0)HTML5 Canvas的左上角。的e.clientX和e.clientY将获得相对于文档的顶部位置的鼠标&#xff0c;来改变这种是基于画布的顶部&#xff0c;我们减去left&#xff0c;并right从客户端X和Y的画布位置var canvas …

LeetCode 2130. 链表最大孪生和(链表快慢指针+反转链表+双指针)

文章目录1. 题目2. 解题1. 题目 在一个大小为 n 且 n 为 偶数 的链表中&#xff0c;对于 0 < i < (n / 2) - 1 的 i &#xff0c;第 i 个节点&#xff08;下标从 0 开始&#xff09;的孪生节点为第 (n-1-i) 个节点 。 比方说&#xff0c;n 4 那么节点 0 是节点 3 的孪…

Splay初步【bzoj1503】

做了一道水题&#xff0c;把bzoj1503用Splay重新写了一下。 1 #include <bits/stdc.h>2 #define rep(i, a, b) for (int i a; i < b; i)3 #define REP(i, a, b) for (int i a; i < b; i)4 #define drep(i, a, b) for (int i a; i > b; i--)5 #define mp make…