LeetCode 2121. 相同元素的间隔之和(前缀和)
生活随笔
收集整理的這篇文章主要介紹了
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 在下標 5 和 6 ,|2 - 5| + |2 - 6| = 7 - 下標 3 :另一個 1 在下標 1 ,|3 - 1| = 2 - 下標 4 :另一個 2 在下標 0 ,|4 - 0| = 4 - 下標 5 :另兩個 3 在下標 2 和 6 ,|5 - 2| + |5 - 6| = 4 - 下標 6 :另兩個 3 在下標 2 和 5 ,|6 - 2| + |6 - 5| = 5示例 2: 輸入:arr = [10,5,10,10] 輸出:[5,0,3,4] 解釋: - 下標 0 :另兩個 10 在下標 2 和 3 ,|0 - 2| + |0 - 3| = 5 - 下標 1 :只有這一個 5 在數組中,所以到相同元素的間隔之和是 0 - 下標 2 :另兩個 10 在下標 0 和 3 ,|2 - 0| + |2 - 3| = 3 - 下標 3 :另兩個 10 在下標 0 和 2 ,|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
- 利用前綴和獲取同符號的區間的和
340 ms 131.3 MB C++
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode 2121. 相同元素的间隔之和(前缀和)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 1901. 找出顶峰元
- 下一篇: LeetCode 1861. 旋转盒子(