zoomdong
zoomdong
这题是一个bfs比较典型的题目: 因为它要一圈一圈的找出去. ```js /** * @param {number[][]} grid * @return {number} */ var orangesRotting = function(grid) { let count = 0; let list = []; for(let i = 0;i
约瑟夫环问题,最简单的做法就是搞个循环队列。 然后会超时。换个迭代的写法(或者把上面取余也可以过): ```js /** * @param {number} n * @param {number} m * @return {number} */ var lastRemaining = function(n, m) { let flag = 0; for (let i =...
周赛的第二题,没写出来很傻屌。dbqwsdd: 先存一下票数,然后重写一个排序就行辣: ```js /** * @param {string[]} votes * @return {string} */ /** 队伍最多有26个,且用大写字母表示,故创建一个二维数组[26]*[n](n就是实际参加的队伍个数加1),用来存储这26个队伍的排名数据。如:有3个队伍,分别为A,B,C,那么n就是4,[0][0]表示A队获得‘排位第一’的票数,[0][1]表示A队获得’排位第二‘的票数,以此类推。。。最后的[0][4]表示A队的编号,用于字母顺序排序。 再将这个二维数组降序排序,得到的数组就是我们希望的结果。 */ var rankTeams = function(votes) { let count = [] let len = votes[0].length for...
这题来个中序遍历比较一波,然后换值就可以了: ```js /** * Definition for a binary tree node. * function TreeNode(val) { * this.val = val; * this.left = this.right = null; * } */ /** * @param...
dp问题: ```js /** * @param {number[]} prices * @return {number} */ var maxProfit = function(prices) { if(prices.length < 0) { return; } let sum = prices[0]; let dp = [];...
这题本质上是三指针 ```js /** * @param {number} n * @return {number} */ var nthUglyNumber = function(n) { let dp = Array(n + 1).fill(0) dp[0] = 1 let l2 = 0 let...
滑动窗口的典型例子: ```js /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { let map = {} let res = 0 let slidingWindow = [] for (let...
很裸的动态规划,dp[i][j] = Math.max(dp[i-1][j],dp[i][j - 1]) + grid[i][j] ```js /** * @param {number[][]} grid * @return {number} */ var maxValue = function(grid) { let m = grid.length if (m === 0)...
本质上其实也只是个dp ```js /** * @param {number} num * @return {number} */ var translateNum = function(num) { let str = num + '' let dp = Array(str.length + 1).fill(1) for (let...
这题贪心就可以了,把小的放前面,写个cmp函数就可以了: ```js /** * @param {number[]} nums * @return {string} */ var minNumber = function(nums) { let res = [] for (let item of nums) { res.push(item + '') }...