Skip to content

Commit 1f7f8ff

Browse files
committed
10 problems solved.
1 parent 7938f9d commit 1f7f8ff

File tree

10 files changed

+216
-0
lines changed

10 files changed

+216
-0
lines changed

src/1901.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
vector<int> findPeakGrid(vector<vector<int>>& mat) {
2+
int row = mat.size();
3+
int col = mat[0].size();
4+
5+
vector<int> pos(2, -1);
6+
search(mat, row, col, 0, col-1, pos);
7+
8+
return pos;
9+
}
10+
11+
bool search(vector<vector<int>>& mat, int row, int col, int lh, int rh, vector<int>& pos)
12+
{
13+
if (lh <= rh)
14+
{
15+
int mid = (lh+rh)/2;
16+
for (int i = 0; i < row; ++i)
17+
{
18+
bool flag = true;
19+
if (i > 0)
20+
flag &= mat[i][mid] > mat[i-1][mid];
21+
if (i < row-1)
22+
flag &= mat[i][mid] > mat[i+1][mid];
23+
if (mid > 0)
24+
flag &= mat[i][mid] > mat[i][mid-1];
25+
if (mid < col-1)
26+
flag &= mat[i][mid] > mat[i][mid+1];
27+
if (flag)
28+
{
29+
pos[0] = i;
30+
pos[1] = mid;
31+
return true;
32+
}
33+
}
34+
35+
return search(mat, row, col, lh, mid-1, pos) || search(mat, row, col, mid+1, rh, pos);
36+
}
37+
else
38+
return false;
39+
}

src/2091.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
int minimumDeletions(vector<int>& nums) {
2+
int len = nums.size();
3+
if (len <= 2)
4+
return len;
5+
6+
int maxval = -1e6, minval = 1e6;
7+
int maxpos = 0, minpos = 0;
8+
for (int i = 0; i < len; ++i)
9+
{
10+
if (nums[i] < minval)
11+
{
12+
minval = nums[i];
13+
minpos = i;
14+
}
15+
if (nums[i] > maxval)
16+
{
17+
maxval = nums[i];
18+
maxpos = i;
19+
}
20+
}
21+
22+
int n1 = minpos > maxpos ? minpos+1 : maxpos+1;
23+
int n2 = minpos > maxpos ? len-maxpos : len-minpos;
24+
int n3 = (minpos < len-1-minpos ? minpos+1 : len-minpos) + (maxpos < len-1-maxpos ? maxpos+1 : len-maxpos);
25+
26+
return min(min(n1, n2), n3);
27+
}

src/2095.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
ListNode* deleteMiddle(ListNode* head) {
2+
if (head->next == nullptr)
3+
{
4+
delete head;
5+
return nullptr;
6+
}
7+
8+
int ct = 0;
9+
ListNode* node = head;
10+
while (node != nullptr)
11+
{
12+
++ct;
13+
node = node->next;
14+
}
15+
16+
int n = ct/2;
17+
int i = 0;
18+
ListNode* h = head, *cur = h;
19+
node = h->next;
20+
while (i != n-1)
21+
{
22+
cur = node;
23+
node = node->next;
24+
++i;
25+
}
26+
27+
cur->next = node->next;
28+
delete node;
29+
return h;
30+
}

src/2130.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
int pairSum(ListNode* head) {
2+
vector<int> num(1e5, 0);
3+
int n = 0;
4+
while (head != nullptr)
5+
{
6+
num[n++] = head->val;
7+
head = head->next;
8+
}
9+
10+
int lim = n/2-1;
11+
int maxval = 0;
12+
for (int i = 0; i <= lim; ++i)
13+
{
14+
int tmp = num[i] + num[n-1-i];
15+
if (tmp > maxval)
16+
maxval = tmp;
17+
}
18+
19+
return maxval;
20+
}

src/2150.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
vector<int> findLonely(vector<int>& nums) {
2+
int len = nums.size();
3+
if (len == 1)
4+
return nums;
5+
sort(nums.begin(), nums.end());
6+
7+
vector<int> res;
8+
if (nums[1] > nums[0]+1)
9+
res.push_back(nums[0]);
10+
11+
for (int i = 1; i < len-1; ++i)
12+
{
13+
if ((nums[i] > nums[i-1]+1) && (nums[i] < nums[i+1]-1))
14+
res.push_back(nums[i]);
15+
}
16+
if (nums[len-1] > nums[len-2]+1)
17+
res.push_back(nums[len-1]);
18+
19+
return res;
20+
}

src/2161.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
vector<int> pivotArray(vector<int>& nums, int pivot) {
2+
auto cmp = [&](int a, int b) {
3+
return (a < pivot && b == pivot) || (a < pivot && b > pivot) || (a == pivot && b > pivot);
4+
};
5+
6+
stable_sort(nums.begin(), nums.end(), cmp);
7+
return nums;
8+
}

src/2169.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
int countOperations(int num1, int num2) {
2+
int ct = 0;
3+
while (num1 != 0 && num2 != 0)
4+
{
5+
if (num1 >= num2)
6+
{
7+
int tmp = num1/num2;
8+
num1 = num1 - tmp*num2;
9+
ct += tmp;
10+
}
11+
else
12+
{
13+
int tmp = num2/num1;
14+
num2 = num2 - tmp*num1;
15+
ct += tmp;
16+
}
17+
}
18+
19+
return ct;
20+
}

src/2176.cpp

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
int countPairs(vector<int>& nums, int k) {
2+
int ct = 0;
3+
int len = nums.size();
4+
for (int i = 0; i < len-1; ++i)
5+
{
6+
for (int j = i+1; j < len; ++j)
7+
{
8+
if (nums[i] == nums[j] && (i*j%k == 0))
9+
++ct;
10+
}
11+
}
12+
13+
return ct;
14+
}

src/2177.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
vector<long long> sumOfThree(long long num) {
2+
if (num%3 != 0)
3+
return {};
4+
vector<long long> res(3, 0);
5+
res[0] = num/3-1;
6+
res[1] = num/3;
7+
res[2] = num/3+1;
8+
9+
return res;
10+
}

src/2181.cpp

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
ListNode* mergeNodes(ListNode* head) {
2+
ListNode* p = head->next;
3+
delete head;
4+
5+
ListNode* h = p;
6+
ListNode* cur = h;
7+
ListNode* node = p->next;
8+
while (node != nullptr)
9+
{
10+
ListNode* tmp = node;
11+
node = node->next;
12+
if (tmp->val != 0)
13+
{
14+
cur->val += tmp->val;
15+
}
16+
else
17+
{
18+
cur->next = node;
19+
cur = node;
20+
if (node == nullptr)
21+
break;
22+
node = node->next;
23+
}
24+
delete tmp;
25+
}
26+
27+
return h;
28+
}

0 commit comments

Comments
 (0)