Skip to content

Commit df95f77

Browse files
committed
Add C++ Solution 13 14 15
1 parent 5b1c6f0 commit df95f77

File tree

4 files changed

+88
-0
lines changed

4 files changed

+88
-0
lines changed

Problems/.DS_Store

2 KB
Binary file not shown.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
public:
3+
int longestOnes(vector<int>& nums, int k) {
4+
int n = nums.size();
5+
vector<int> prefixSum(n+1, 0);
6+
for (int i = 1; i <= n; i++) prefixSum[i] = prefixSum[i-1] + nums[i-1];
7+
8+
int res = 0;
9+
for (int i = 1; i <= n; i++)
10+
{
11+
int left = i;
12+
int right = n;
13+
14+
int ans = 0;
15+
while (left <= right)
16+
{
17+
int mid = (right-left)/2+left;
18+
int num0 = (mid-i+1)-prefixSum[mid] + prefixSum[i-1]; // in [i..mid]
19+
if (num0 <= k) {ans = mid; left = mid + 1;}
20+
else {right = mid-1;}
21+
}
22+
23+
res = max(res, ans - i + 1);
24+
}
25+
26+
return res;
27+
28+
}
29+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
class Solution {
2+
public:
3+
int getValue(vector<vector<int>>& matrix, int mid)
4+
{
5+
int n = matrix.size();
6+
int m = matrix[0].size();
7+
int i = mid / m;
8+
int j = mid % m;
9+
return matrix[i][j];
10+
}
11+
12+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
13+
int n = matrix.size();
14+
int m = matrix[0].size();
15+
int left = 0, right = n * m-1;
16+
while (left <= right)
17+
{
18+
int mid = (right - left)/2+left;
19+
int value = getValue(matrix, mid);
20+
if (target == value) return true;
21+
if (target < value) right = mid-1;
22+
else left = mid + 1;
23+
}
24+
return false;
25+
}
26+
};
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution {
2+
public:
3+
bool check(int x, vector<int>& price, int k)
4+
{
5+
int n = price.size();
6+
int last = 0;
7+
int idx = 1;
8+
for (int i = 1; i < k; i++)
9+
{
10+
while (idx < n && price[idx] - price[last] < x) idx++;
11+
if (idx == n) return false;
12+
last = idx;
13+
idx++;
14+
}
15+
return true;
16+
}
17+
int maximumTastiness(vector<int>& price, int k) {
18+
sort(price.begin(), price.end());
19+
int left = 0, right = price[price.size()-1] - price[0];
20+
int ans = 0;
21+
while (left <= right)
22+
{
23+
int mid = (right-left)/2+left;
24+
if (check(mid, price, k))
25+
{
26+
ans = mid;
27+
left = mid+1;
28+
}
29+
else right = mid-1;
30+
}
31+
return ans;
32+
}
33+
};

0 commit comments

Comments
 (0)