/** * @param {number[]} gas * @param {number[]} cost * @return {number} */var canCompleteCircuit = function(gas, cost) { if (gas.length === 1) { return gas[0] < cost[0] ? -1 : 0; } const search = (start) => { let i = 0 ; let current = 0; while (i < gas.length) { const next = start + i++; current += gas[next % gas.length]; current -= cost[next % gas.length]; if (current < 0) { return -1; } } return current; }; for (let i = 0; i < gas.length; i ++) { if (gas[i] > cost[i]) { if (search(i) >= 0) { return i; } } } return -1;};
/** * @param {number[]} bills * @return {boolean} */var lemonadeChange = function(bills) { let five = 0, ten = 0, twenty = 0; for (let i = 0; i < bills.length; i++) { if (bills[i] === 5) { five += 1; } else if (bills[i] === 10) { if (five === 0) { return false; } five -= 1; ten += 1; } else if (bills[i] === 20) { if (ten === 0) { if (five < 3) { return false; } five -= 3; } else if (ten > 0) { if (five < 1) { return false; } ten -= 1; five -= 1; twenty += 1; } } } return true;};
/** * @param {number[]} rowSum * @param {number[]} colSum * @return {number[][]} */var restoreMatrix = function(rowSum, colSum) { const r = rowSum.length; const c = colSum.length; const m = new Array(r); for (let i = 0; i < r; i++) { m[i] = new Array(c).fill(0); for (let j = 0; j < c; j++) { m[i][j] = Math.min(rowSum[i], colSum[j]); rowSum[i] -= m[i][j]; colSum[j] -= m[i][j]; } } return m;};
/** * @param {string} s * @return {string} */var reorganizeString = function(s) { if (s.length === 1) { return s; } let counts = {}; for (let i = 0; i < s.length; i++) { const c = s.charAt(i); counts[c] = counts[c] || 0; counts[c] += 1; } counts = Object.entries(counts); counts.sort((a, b) => b[1] - a[1]); let maxChar = counts.shift(); let ans = [], maxrow = maxChar[1]; if (maxrow > (( 1 + s.length) >> 1)) return ''; for (let i = 0; i < maxrow; i++) { ans[i] = [maxChar[0]]; } let row = 0; while(counts.length) { let [c, max] = counts.shift(); for (let j = 0; j < max; j++, row++) { ans[row % maxrow].push(c); } } // console.log(ans); const r = ans.map(item => item.join('')).join(''); return r;};