File tree Expand file tree Collapse file tree
LeetCode/2121._Intervals_Between_Identical_Elements Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ #include < bits/stdc++.h>
2+ #include < gtest/gtest.h>
3+ #include < unordered_map>
4+ using namespace std ;
5+
6+ // // START
7+ /*
8+ ## 2121. Intervals Between Identical Elements
9+
10+ */
11+
12+ class Solution {
13+ public:
14+ vector<long long > getDistances (vector<int > &arr) {
15+ unordered_map<int , vector<int >> mm;
16+ for (int i = 0 ; i < arr.size (); i++) {
17+ mm[arr[i]].push_back (i);
18+ }
19+ vector<long long > rets (arr.size ());
20+ for (auto m : mm) {
21+ vector<long long > leftsum (m.second .size ());
22+ int count = 1 ;
23+ for (int i = 1 ; i < m.second .size (); i++) {
24+ int delta = m.second [i] - m.second [i - 1 ];
25+ leftsum[i] = leftsum[i - 1 ] + count * delta;
26+ count++;
27+ }
28+ rets[m.second .back ()] = leftsum.back ();
29+
30+ vector<long long > rightsum (m.second .size ());
31+ count = 1 ;
32+ for (int i = m.second .size () - 2 ; i >= 0 ; i--) {
33+ int delta = m.second [i + 1 ] - m.second [i];
34+ rightsum[i] = rightsum[i + 1 ] + count * delta;
35+ count++;
36+ rets[m.second [i]] = leftsum[i] + rightsum[i];
37+ }
38+ }
39+ return rets;
40+ }
41+ };
42+
43+ // // END
44+ struct T {};
45+
46+ TEST (Solution, test) {
47+ T ts[] = {
48+ {
49+
50+ },
51+ {
52+
53+ },
54+
55+ };
56+
57+ for (T t : ts) {
58+ Solution solution;
59+ }
60+ }
61+
62+ int main () {
63+ testing::InitGoogleTest ();
64+
65+ return RUN_ALL_TESTS ();
66+ }
You can’t perform that action at this time.
0 commit comments