Skip to content

Commit c02953b

Browse files
committed
8 problems solved.
1 parent a5ccc9a commit c02953b

File tree

8 files changed

+183
-0
lines changed

8 files changed

+183
-0
lines changed

src/1233.cpp

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
vector<string> removeSubfolders(vector<string>& folder) {
2+
int len = folder.size();
3+
sort(folder.begin(), folder.end());
4+
list<string> lst(folder.begin(), folder.end());
5+
6+
auto iter = lst.begin();
7+
auto iter_next = ++iter;
8+
--iter;
9+
while (true)
10+
{
11+
auto iter_end = lst.end();
12+
if (iter == iter_end || iter_next == iter_end)
13+
break;
14+
if ((*iter_next).find(*iter) == 0 && (*iter_next)[(*iter).size()] == '/')
15+
iter_next = lst.erase(iter_next);
16+
else
17+
{
18+
++iter;
19+
++iter_next;
20+
}
21+
}
22+
23+
return vector<string>(lst.begin(), lst.end());
24+
}

src/1343.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
int numOfSubarrays(vector<int>& arr, int k, int threshold) {
2+
int len = arr.size();
3+
int sum = 0;
4+
int ct = 0;
5+
const int thres = k*threshold;
6+
7+
for (int i = 0; i < k; ++i)
8+
sum += arr[i];
9+
if (sum >= thres)
10+
++ct;
11+
int j = k;
12+
while (j < len)
13+
{
14+
sum += arr[j]-arr[j-k];
15+
if (sum >= thres)
16+
++ct;
17+
++j;
18+
}
19+
20+
return ct;
21+
}

src/1508.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
int rangeSum(vector<int>& nums, int n, int left, int right) {
2+
vector<int> res(n*(n+1)/2, 0);
3+
int k = -1;
4+
for (int i = 0; i < n; ++i)
5+
{
6+
res[++k] = nums[i];
7+
for (int j = i+1; j < n; ++j)
8+
{
9+
int tmp = res[k] + nums[j];
10+
res[++k] = tmp;
11+
}
12+
}
13+
14+
sort(res.begin(), res.end());
15+
long long sum = 0;
16+
for (int i = left-1; i < right; ++i)
17+
sum += res[i];
18+
19+
return sum%(1000000000+7);
20+
}

src/1701.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
double averageWaitingTime(vector<vector<int>>& customers) {
2+
int len = customers.size();
3+
double avgWaitTime = 0;
4+
int prefinishtime = 0;
5+
int i = 0;
6+
7+
while (i < len)
8+
{
9+
avgWaitTime += customers[i][0] >= prefinishtime ? customers[i][1] : prefinishtime-customers[i][0]+customers[i][1];
10+
prefinishtime = customers[i][0] >= prefinishtime ? customers[i][0]+customers[i][1] : prefinishtime+customers[i][1];
11+
++i;
12+
}
13+
14+
return avgWaitTime / len;
15+
}

src/1726.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
int tupleSameProduct(vector<int>& nums) {
2+
int len = nums.size();
3+
map<int, int> mp;
4+
for (int i = 0; i < len; ++i)
5+
{
6+
for (int j = i+1; j < len; ++j)
7+
mp[nums[i]*nums[j]]++;
8+
}
9+
10+
int sum = 0;
11+
auto iterend = mp.end();
12+
for (auto iter = mp.begin(); iter != iterend; ++iter)
13+
{
14+
if (iter->second > 1)
15+
sum += iter->second*(iter->second-1)*4;
16+
}
17+
18+
return sum;
19+
}

src/1806.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
int reinitializePermutation(int n) {
2+
vector<int> arr(n, 0);
3+
for (int i = 0; i < n; ++i)
4+
arr[i] = i;
5+
6+
int ct = 0;
7+
vector<int> tmp(n, 0);
8+
while (true)
9+
{
10+
++ct;
11+
int k = 0;
12+
for (int i = 0; i < n; ++i)
13+
{
14+
if (i%2 == 0)
15+
tmp[i] = arr[i/2];
16+
else
17+
tmp[i] = arr[n/2+(i-1)/2];
18+
if (tmp[i] == i)
19+
++k;
20+
}
21+
if (k == n)
22+
break;
23+
swap(arr, tmp);
24+
}
25+
26+
return ct;
27+
}

src/287.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
int findDuplicate(vector<int>& nums) {
2+
int len = nums.size();
3+
sort(nums.begin(), nums.end());
4+
int i = 1;
5+
while (i < len)
6+
{
7+
if (nums[i] == nums[i-1])
8+
break;
9+
++i;
10+
}
11+
12+
return nums[i];
13+
}

src/950.cpp

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
vector<int> deckRevealedIncreasing(vector<int>& deck) {
2+
int len = deck.size();
3+
sort(deck.begin(), deck.end());
4+
vector<int> res(len, 0);
5+
vector<int> flag(len, 0);
6+
7+
int ct = 0;
8+
int v = 0;
9+
int i = 0;
10+
while (ct < len)
11+
{
12+
int j;
13+
for (j = i; j < len; ++j)
14+
{
15+
if (flag[j] == 0)
16+
{
17+
flag[j] = 1-v;
18+
if (flag[j] == 1)
19+
res[j] = deck[ct++];
20+
v = 1-v;
21+
i = (j+1)%len;
22+
break;
23+
}
24+
}
25+
26+
if (j == len)
27+
{
28+
for (j = 0; j < i; ++j)
29+
{
30+
if (flag[j] == 0)
31+
{
32+
flag[j] = 1-v;
33+
if (flag[j] == 1)
34+
res[j] = deck[ct++];
35+
v = 1-v;
36+
i = (j+1)%len;
37+
break;
38+
}
39+
}
40+
}
41+
}
42+
43+
return res;
44+
}

0 commit comments

Comments
 (0)