var maxProfit = function(prices) { let l = prices.length; let min = prices[0]; let profit = 0; for(let i = 1; i < l; i ++) { if (prices[i] < min) { min = prices[i] } if ((prices[i] - min) > profit ) { profit = prices[i] - min; } } return profit };
不同路径
一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” )。
机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为“Finish”)。
问总共有多少条不同的路径?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
var uniquePaths = function(m, n) { let dp = Array.from(newArray(m+1),() =>newArray(n+1).fill(0)) for (let i = 0; i < m; i++) { dp[i][0] = 1 } for (let j = 0; j < n; j++) { dp[0][j] = 1 } for(let i = 1;i<m;i++){ for(let j= 1;j<n;j++){ dp[i][j] = dp[i-1][j]+dp[i][j-1] } } return dp[m-1][n-1] };
/** * @param {string} s * @return {boolean} */ var isValid = function(s) { let stack = []; let array = s.split('');
for(let e of array) { if (isLeft(e)) { stack.push(e) }else { let last = stack[stack.length - 1]; if (isMatch(last+e)) { stack.pop(); }else { returnfalse; } } }
return stack.length === 0 ? true : false;
};
functionisLeft (s) { return ['(', '{', '['].includes(s); }
functionisMatch (s) { return ['()', '{}', '[]'].includes(s); }
/** * @param {number[]} ratings * @return {number} */ var candy = function(ratings) { let length = ratings.length; let left = newArray(length).fill(1); let right = newArray(length).fill(1);
for (let i = 1; i < length; i ++) { if (ratings[i] > ratings[i - 1]) { left[i] = left[i - 1] + 1; } }
let count = left[length - 1];
for (let k = length - 2; k >= 0; k--) { if (ratings[k] > ratings[k + 1]) { right[k] = right[k + 1] + 1 } count += Math.max(left[k], right[k]) } return count; };
/** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { let length = s.length; let res = 0; let map = newMap(); for (let i = 0, j = 0; i < length; i++) { if (map.has(s[i])) { j = Math.max(map.get(s[i]), j) } res = Math.max(res, i - j + 1); map.set(s[i], i+1); }