Skip to content

Commit a5fc56b

Browse files
committed
3 problems
1 parent 455ef26 commit a5fc56b

File tree

4 files changed

+60
-0
lines changed

4 files changed

+60
-0
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,9 @@ Golang solution for leetcode. For each problem, there is a simple *_test.go to t
256256
#### [368. Largest Divisible Subset](https://github.com/hitzzc/go-leetcode/tree/master/largest_divisible_subset)
257257
#### [371. Sum of Two Integers](https://github.com/hitzzc/go-leetcode/tree/master/sum_of_two_integers)
258258
#### [373. Find K Pairs with Smallest Sums](https://github.com/hitzzc/go-leetcode/tree/master/find_k_pairs_with_smallest_sums)
259+
#### [374. Guess Number Higher or Lower](https://github.com/hitzzc/go-leetcode/tree/master/guess_number_higher_or_lower)
260+
#### [375. Guess Number Higher or Lower II](https://github.com/hitzzc/go-leetcode/tree/master/guess_number_higher_or_lower_II)
261+
#### [376. Wiggle Subsequence](https://github.com/hitzzc/go-leetcode/tree/master/wiggle_subsequence)
259262

260263

261264

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Forward declaration of guess API.
2+
// @param num, your guess
3+
// @return -1 if my number is lower, 1 if my number is higher, otherwise return 0
4+
int guess(int num);
5+
6+
class Solution {
7+
public:
8+
int guessNumber(int n) {
9+
int left = 1, right = n;
10+
int mid;
11+
while (left <= right) {
12+
mid = left + (right-left)/2;
13+
cout << mid << endl;
14+
if (guess(mid) == 0) break;
15+
else if (guess(mid) > 0) left = mid+1;
16+
else right = mid-1;
17+
}
18+
return mid;
19+
}
20+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
int getMoneyAmount(int n) {
4+
vector<vector<int>> dp(n+1, vector<int>(n+1, 0));
5+
for (int gap = 1; gap < n; ++gap) {
6+
for (int low = 1; low <= n-gap; ++low) {
7+
int high = low + gap;
8+
dp[low][high] = INT_MAX;
9+
for (int i = low; i < high; ++i) {
10+
dp[low][high] = min(dp[low][high], i + max(dp[low][i-1], dp[i+1][high]));
11+
}
12+
}
13+
}
14+
return dp[1][n];
15+
}
16+
};
+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
public:
3+
int wiggleMaxLength(vector<int>& nums) {
4+
if (nums.size() < 2) return nums.size();
5+
int inc_length = 1, dec_length = 1;
6+
int pre_inc_v = nums[0], pre_dec_v = nums[0];
7+
for (int i = 1; i < nums.size(); ++i) {
8+
if (nums[i] < pre_inc_v && dec_length <= inc_length) {
9+
dec_length = inc_length + 1;
10+
pre_dec_v = nums[i];
11+
}
12+
if (nums[i] > pre_dec_v && inc_length <= dec_length) {
13+
inc_length = dec_length + 1;
14+
pre_inc_v = nums[i];
15+
}
16+
if (nums[i] > pre_inc_v) pre_inc_v = nums[i];
17+
if (nums[i] < pre_dec_v) pre_dec_v = nums[i];
18+
}
19+
return max(inc_length, dec_length);
20+
}
21+
};

0 commit comments

Comments
 (0)