Skip to content

Commit 4e67506

Browse files
committed
5 problems solved.
1 parent f4df8f7 commit 4e67506

File tree

5 files changed

+132
-0
lines changed

5 files changed

+132
-0
lines changed

src/1903.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
string largestOddNumber(string num) {
2+
int len = num.size();
3+
int index = -1;
4+
bool flag = false;
5+
for (int i = len-1; i >= 0; --i)
6+
{
7+
int tmp = num[i]-'0';
8+
switch (tmp)
9+
{
10+
case 1:
11+
case 3:
12+
case 5:
13+
case 7:
14+
case 9:
15+
index = i;
16+
flag = true;
17+
break;
18+
default:
19+
break;
20+
}
21+
if (flag)
22+
break;
23+
}
24+
25+
if (index == -1)
26+
return "";
27+
else
28+
return num.substr(0, index+1);
29+
}

src/1909.cpp

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

src/1920.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
vector<int> buildArray(vector<int>& nums) {
2+
int len = nums.size();
3+
vector<int> res(len, 0);
4+
for (int i = 0; i < len; ++i)
5+
{
6+
res[i] = nums[nums[i]];
7+
}
8+
9+
return res;
10+
}

src/398.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Solution(vector<int>& nums) {
2+
int len = nums.size();
3+
for (int i = 0; i < len; ++i)
4+
{
5+
elems[nums[i]].vals.push_back(i);
6+
elems[nums[i]].len++;
7+
}
8+
}
9+
10+
int pick(int target) {
11+
int len = elems[target].len;
12+
13+
return elems[target].vals[rand()%len];
14+
}
15+
16+
struct Elem
17+
{
18+
vector<int> vals;
19+
int len;
20+
Elem():vals({}), len(0){}
21+
};
22+
map<int, Elem> elems;

src/921.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
int minAddToMakeValid(string s) {
2+
int len = s.size();
3+
if (len <= 1)
4+
return len;
5+
int i = 0;
6+
int left = 0, ct = 0;
7+
while (i < len)
8+
{
9+
if (s[i] == '(')
10+
{
11+
++left;
12+
++ct;
13+
}
14+
else
15+
{
16+
if (left > 0)
17+
{
18+
--left;
19+
--ct;
20+
}
21+
else
22+
{
23+
++ct;
24+
}
25+
}
26+
++i;
27+
}
28+
29+
return ct;
30+
}

0 commit comments

Comments
 (0)