- 299. 猜数字游戏">299. 猜数字游戏
- 412. Fizz Buzz">412. Fizz Buzz
- 506. 相对名次">506. 相对名次
- 539. 最小时间差">539. 最小时间差
- 553. 最优除法">553. 最优除法
- 537. 复数乘法">537. 复数乘法
- 592. 分数加减运算">592. 分数加减运算
- 640. 求解方程">640. 求解方程
- 38. 外观数列">38. 外观数列
- 443. 压缩字符串">443. 压缩字符串
- 8. 字符串转换整数 (atoi)">8. 字符串转换整数 (atoi)
- 13. 罗马数字转整数">13. 罗马数字转整数
- 12. 整数转罗马数字">12. 整数转罗马数字
- 273. 整数转换英文表示">273. 整数转换英文表示
- 165. 比较版本号">165. 比较版本号
- 481. 神奇字符串">481. 神奇字符串
299. 猜数字游戏
思路
先用 map 存起来, 再遍历一次把位置对的index删掉,然后 再把奶牛计算出来
代码
/**
* @param {string} secret
* @param {string} guess
* @return {string}
*/
var getHint = function(secret, guess) {
const map = new Map();
// 遍历完成map
for(let i = 0; i < secret.length; i++) {
let cur = secret[i];
if (map.has(cur)) {
map.get(cur).push(i);
} else {
map.set(cur, [i]);
}
}
let a = 0, b = 0, usedIdx = []
for(let i = 0; i < guess.length; i++) {
let cur = guess[i];
// 如果在secret中
if (map.has(cur)) {
let cArr = map.get(cur)
// 如果有当前索引并且位置相同,就把当前索引删除
if (map.get(cur).includes(i)) {
let idx = cArr.indexOf(i)
usedIdx.push(i)
cArr.splice(idx, 1)
a ++
}
if (!cArr.length) {
map.delete(cur)
}
}
}
// console.log(map)
for(let i = 0; i < guess.length; i++) {
let cur = guess[i];
// 如果在secret中,都是位置不对的
if (usedIdx.includes(i)) continue
// console.log(cur, map.has(cur))
if (map.has(cur)) {
let cArr = map.get(cur)
if (cArr.length) {
b++;
}
cArr.shift()
if (!cArr.length) {
map.delete(cur)
}
}
}
return `${a}A${b}B`
};
复杂度分析
时间复杂度 #card=math&code=O%28N%29)
空间复杂度 #card=math&code=O%28N%29)
412. Fizz Buzz
思路
遍历就完了
代码
/**
* @param {number} n
* @return {string[]}
*/
var fizzBuzz = function(n) {
const ret = [];
let idx = 1;
while(idx <= n) {
let m5 = idx % 5 === 0, m3 = idx % 3 === 0
if (m3 && m5) {
ret.push('FizzBuzz')
} else if (m3) {
ret.push('Fizz')
} else if (m5) {
ret.push('Buzz')
} else {
ret.push(`${idx}`)
}
idx++
}
return ret;
};
复杂度分析
时间复杂度 #card=math&code=O%28N%29)
空间复杂度
506. 相对名次
思路
先排序,然后用map记下每个分数对应的名词,再遍历元数据
代码
/**
* @param {number[]} score
* @return {string[]}
*/
var findRelativeRanks = function(score) {
let ret = score.slice(), map = {};
ret.sort((a, b)=> b - a)
map[ret[0]] = "Gold Medal"
map[ret[1]] = "Silver Medal"
map[ret[2]] = "Bronze Medal"
for(let i = 3; i < ret.length; i ++) {
let cur = ret[i]
map[cur] = `${i+1}`
}
let res = []
for(let i = 0; i < score.length; i ++) {
let cur = score[i]
res[i] = map[cur]
}
return res;
};
复杂度分析
时间复杂度 #card=math&code=O%28N%29)
空间复杂度 #card=math&code=O%28N%29)