- 第一个错误的版本
ts
var solution = function (isBadVersion: any) {
return function (n: number): number {
let left = 1;
let right = n;
while (left < right) {
let mid = Math.floor(left + (right - left) / 2);
if (isBadVersion(mid)) {
right = mid;
} else {
left = mid + 1;
}
}
return left;
}
}
py
class Solution:
def firstBadVersion(self, n: int) -> int:
i, j = 1, n
while i <= j:
m = (i + j) // 2
if isBadVersion(m): j = m - 1
else: i = m + 1
return i
C#
/* The isBadVersion API is defined in the parent class VersionControl.
bool IsBadVersion(int version); */
public class Solution : VersionControl {
public int FirstBadVersion(int n) {
int l =1;
int r = n;
while(l<=r)
{
int m = l+(r-l)/2;
if(IsBadVersion(m))
{
r = m-1;
}
else
{
l = m+1;
}
}
return l;
}
}
- 买卖股票的最佳时机
ts
function maxProfit(prices: number[]): number {
let min = Infinity
let sum = 0
for (let i = 0; i < prices.length; i++) {
if (prices[i] < min) {
min = prices[i]
} else {
sum = Math.max(sum, prices[i] - min)
}
}
return sum
};
py
class Solution:
def maxProfit(self, prices: List[int]) -> int:
_min = float("inf")
_sum = 0
for i in prices:
if i < _min:
_min = i
else:
_sum = max(_sum, i - _min)
return _sum
C#
public class Solution {
public int MaxProfit(int[] prices) {
int min = prices[0];
int sum = 0;
for(int i = 0;i<prices.Length;i++)
{
if(prices[i]<=min)
{
min = prices[i];
}
else
{
sum = Math.Max(sum,prices[i] - min);
}
}
return sum;
}
}
- 打家劫舍
ts
function rob(nums: number[]): number {
const n = nums.length
const dp: number[][] = new Array(n).fill(0).map(() => [])
dp[0] = [0, nums[0]]
for (let i = 1; i < nums.length; i++) {
dp[i] = [Math.max(...dp[i - 1]), dp[i - 1][0] + nums[i]]
}
return Math.max(...dp[n - 1])
}