Skip to content

Commit 22291ef

Browse files
committed
7 problems solved.
1 parent a878ba9 commit 22291ef

File tree

7 files changed

+166
-0
lines changed

7 files changed

+166
-0
lines changed

src/1437.cpp

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

src/1576.cpp

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

src/1608.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
int specialArray(vector<int>& nums) {
2+
int len = nums.size();
3+
sort(nums.begin(), nums.end());
4+
map<int, int> mp;
5+
int k = nums[len-1];
6+
mp[k] = 1;
7+
for (int i = len-2; i >= 0; --i)
8+
{
9+
if (nums[i] == k)
10+
{
11+
mp[k]++;
12+
}
13+
else
14+
{
15+
mp[nums[i]] = mp[k] + 1;
16+
k = nums[i];
17+
}
18+
}
19+
20+
int n = mp.begin()->first;
21+
for (auto iter = mp.begin(); iter != mp.end(); ++iter)
22+
{
23+
if (iter->first == iter->second)
24+
return iter->first;
25+
else if (iter->first > iter->second)
26+
{
27+
if (iter == mp.begin() || iter->second > n)
28+
return iter->second;
29+
}
30+
n = iter->first;
31+
}
32+
33+
return -1;
34+
}

src/1629.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
char slowestKey(vector<int>& releaseTimes, string keysPressed) {
2+
int len = releaseTimes.size();
3+
int maxtime = releaseTimes[0];
4+
char c = keysPressed[0];
5+
for (int i = 1; i < len; ++i)
6+
{
7+
int duration = releaseTimes[i] - releaseTimes[i-1];
8+
if (duration > maxtime)
9+
{
10+
maxtime = duration;
11+
c = keysPressed[i];
12+
}
13+
else if (duration == maxtime)
14+
{
15+
if (keysPressed[i] > c)
16+
c = keysPressed[i];
17+
}
18+
}
19+
20+
return c;
21+
}

src/1646.cpp

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
int getMaximumGenerated(int n) {
2+
if (n <= 1)
3+
return n;
4+
5+
vector<int> vec(n+1, 0);
6+
vec[0] = 0;
7+
vec[1] = 1;
8+
int i = 2;
9+
int maxvalue = 1;
10+
while (i <= n)
11+
{
12+
if (i%2 == 0)
13+
vec[i] = vec[i/2];
14+
else
15+
vec[i] = vec[i/2] + vec[i/2+1];
16+
if (vec[i] > maxvalue)
17+
maxvalue = vec[i];
18+
++i;
19+
}
20+
21+
return maxvalue;
22+
}

src/1710.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
int maximumUnits(vector<vector<int>>& boxTypes, int truckSize) {
2+
int len = boxTypes.size();
3+
auto cmp = [&boxTypes](const vector<int>& a, const vector<int>& b) {
4+
return a[1] > b[1] || (a[1]==b[1] && a[0] > b[0]);
5+
};
6+
7+
sort(boxTypes.begin(), boxTypes.end(), cmp);
8+
9+
int i = truckSize;
10+
int j = 0;
11+
int sum = 0;
12+
while (i > 0 && j < len)
13+
{
14+
int n = boxTypes[j][0] <= i ? boxTypes[j][0] : i;
15+
sum += n*boxTypes[j][1];
16+
i -= n;
17+
++j;
18+
}
19+
20+
return sum;
21+
}

src/1716.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
int totalMoney(int n) {
2+
int p = n/7;
3+
int r = n%7;
4+
int sum = 28*p + p*(p-1)*7/2;
5+
6+
return sum + ((p+1)+(p+r))*r/2;
7+
}

0 commit comments

Comments
 (0)