Skip to content

Commit 41f8c43

Browse files
committed
6 problems solved.
1 parent fa7a62b commit 41f8c43

File tree

6 files changed

+141
-0
lines changed

6 files changed

+141
-0
lines changed

src/1561.cpp

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

src/1641.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
int countVowelStrings(int n) {
2+
int ct = 0;
3+
for (int i = 0; i < 5; ++i)
4+
dfs(0, i, n, ct);
5+
6+
return ct;
7+
}
8+
9+
void dfs(int index, int v, int n, int& ct)
10+
{
11+
if (index == n-1)
12+
++ct;
13+
else
14+
{
15+
for (int i = v; i < 5; ++i)
16+
dfs(index+1, i, n, ct);
17+
}
18+
}

src/1669.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
ListNode* mergeInBetween(ListNode* list1, int a, int b, ListNode* list2) {
2+
ListNode* p = list1, *q = list2;
3+
ListNode* pr = list1;
4+
int i = 0;
5+
while (i < a-1)
6+
{
7+
p = p->next;
8+
pr = p;
9+
++i;
10+
}
11+
while (i < b)
12+
{
13+
pr = pr->next;
14+
++i;
15+
}
16+
17+
while (q->next != nullptr)
18+
q = q->next;
19+
20+
p->next = list2;
21+
q->next = pr->next;
22+
pr->next = nullptr;
23+
24+
return list1;
25+
}

src/1689.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
int minPartitions(string n) {
2+
int len = n.size();
3+
char c = '0';
4+
for (int i = 0; i < len; ++i)
5+
{
6+
if (n[i] > c)
7+
c = n[i];
8+
}
9+
10+
return c-'0';
11+
}

src/1721.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
ListNode* swapNodes(ListNode* head, int k) {
2+
int ct = 0;
3+
ListNode* p = head;
4+
while (p != nullptr)
5+
{
6+
p = p->next;
7+
++ct;
8+
}
9+
10+
int i = 0, j = ct - k + 1;
11+
int m = 0;
12+
if (k == j)
13+
return head;
14+
15+
p = head;
16+
ListNode* nodearr[2];
17+
while (p != nullptr)
18+
{
19+
++i;
20+
if (i == k || i == j)
21+
{
22+
nodearr[m++] = p;
23+
if (m == 2)
24+
break;
25+
}
26+
p = p->next;
27+
}
28+
29+
int tmp = nodearr[0]->val;
30+
nodearr[0]->val = nodearr[1]->val;
31+
nodearr[1]->val = tmp;
32+
33+
return head;
34+
}

src/890.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
vector<string> findAndReplacePattern(vector<string>& words, string pattern) {
2+
int len = pattern.size();
3+
map<char, vector<int>> mp;
4+
for (int i = 0; i < len; ++i)
5+
{
6+
mp[pattern[i]].push_back(i);
7+
}
8+
9+
int sz = words.size();
10+
vector<string> res;
11+
for (int i = 0; i < sz; ++i)
12+
{
13+
int flag[26] = {0};
14+
auto last = mp.end();
15+
auto iter = mp.begin();
16+
for (; iter != last; ++iter)
17+
{
18+
vector<int>& vec = iter->second;
19+
int n = vec.size();
20+
if (flag[words[i][vec[0]]-'a']== 1)
21+
break;
22+
int j = 1;
23+
for (j = 1; j < n; ++j)
24+
{
25+
if (words[i][vec[0]] != words[i][vec[j]])
26+
break;
27+
}
28+
if (j != n)
29+
break;
30+
flag[words[i][vec[0]]-'a'] = 1;
31+
}
32+
33+
if (iter == last)
34+
res.push_back(words[i]);
35+
}
36+
37+
return res;
38+
}

0 commit comments

Comments
 (0)