Skip to content

Commit 147e191

Browse files
committed
Running sum of 1D array
1 parent b1da7a2 commit 147e191

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

Diff for: README.md

+4
Original file line numberDiff line numberDiff line change
@@ -285,6 +285,10 @@ Princeton Algorithms [Part 1](https://www.coursera.org/learn/algorithms-part1/)
285285
* Randomized set [Problem](https://leetcode.com/explore/interview/card/top-interview-questions-medium/112/design/813/) [C++](problems/others/RandomizedSet.cpp)
286286

287287
## Leetcode
288+
### Array
289+
* Running sum   [Problem](https://leetcode.com/problems/running-sum-of-1d-array/)
290+
* using loop, using partial sum, using accumulate [C++](sites/leetcode/RunningSum.cpp)
291+
288292
### Maths
289293
* Top K frequent elements     [Problem](https://leetcode.com/explore/interview/card/top-interview-questions-medium/110/sorting-and-searching/799/)
290294
* Using hashmap and sorting [C++](sites/leetcode/FrequentElements.cpp)

Diff for: sites/leetcode/RunningSum.cpp

+84
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
// Running Sum of 1d Array https://leetcode.com/problems/running-sum-of-1d-array/
2+
3+
#include <iostream>
4+
#include <vector>
5+
#include <cstdlib>
6+
#include <ctime>
7+
#include <numeric>
8+
9+
void print(std::vector<int>& numbers)
10+
{
11+
for (auto num : numbers) {
12+
std::cout << num << " ";
13+
}
14+
}
15+
16+
std::vector<int> getRandomNumbers(int min, int max, int nums)
17+
{
18+
std::srand(static_cast<unsigned>(std::time(nullptr)));
19+
std::rand();
20+
std::vector<int> numbers(nums);
21+
22+
for (int i = 1; i <= nums; ++i) {
23+
numbers[i - 1] = min + (std::rand() % (max - min + 1));
24+
}
25+
26+
return numbers;
27+
}
28+
29+
std::vector<int> runningSum1(std::vector<int>& numbers)
30+
{
31+
std::vector<int> rSum(numbers.size());
32+
rSum[0] = numbers[0];
33+
34+
for (int i = 1; i < numbers.size(); i++) {
35+
rSum[i] = rSum[i - 1] + numbers[i];
36+
}
37+
38+
return rSum;
39+
}
40+
41+
std::vector<int> runningSum2(std::vector<int>& numbers)
42+
{
43+
std::vector<int> rSum(numbers.size());
44+
std::partial_sum(numbers.begin(), numbers.end(), rSum.begin());
45+
46+
return rSum;
47+
}
48+
49+
std::vector<int> runningSum3(std::vector<int>& numbers)
50+
{
51+
std::vector<int> rSum(numbers.size());
52+
rSum[0] = numbers[0];
53+
54+
for (int i = 1; i < numbers.size(); i++) {
55+
rSum[i] = std::accumulate(numbers.begin(), numbers.begin() + i + 1, 0);
56+
}
57+
58+
return rSum;
59+
}
60+
61+
void test(std::vector<int>& numbers)
62+
{
63+
std::cout << "Numbers : ";
64+
print(numbers);
65+
std::vector<int> rSum1 = runningSum1(numbers);
66+
std::cout << "\nRunning sums : \n";
67+
std::cout << "Using loop: \t ";
68+
print(rSum1);
69+
std::cout << "\nUsing partial sum: ";
70+
std::vector<int> rSum2 = runningSum2(numbers);
71+
print(rSum2);
72+
std::cout << "\nUsing accumulate: ";
73+
std::vector<int> rSum3 = runningSum3(numbers);
74+
print(rSum3);
75+
std::cout << "\n==============================================\n";
76+
}
77+
78+
int main()
79+
{
80+
std::vector<int> numbers = getRandomNumbers(1, 100, 15);
81+
test(numbers);
82+
83+
return 0;
84+
}

0 commit comments

Comments
 (0)