JS leetcode 猜数字 题解分析,我以为题目在第八层我在第一层,其实我在第三层题目在第一层
2023-09-11 14:16:38 时间
壹 ❀ 引
今天来做一道简单到让我一度怀疑题目本意的题目,题目来自leetcode LCP 01. 猜数字,题目描述如下:
小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?
输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。
示例 1:
输入:guess = [1,2,3], answer = [1,2,3] 输出:3 解释:小A 每次都猜对了。
示例 2:
输入:guess = [2,2,3], answer = [3,2,1] 输出:1 解释:小A 只猜对了第二次。
限制:
guess的长度 = 3
answer的长度 = 3
guess的元素取值为 {1, 2, 3} 之一。
answer的元素取值为 {1, 2, 3} 之一。
我们简单分析题目,来说说怎么实现它!
贰 ❀ 思路分析
首先,题目说小A与小B每次都是从1,2,3中随机选择一个数字进行对比,一共比较三次,我第一感觉就是得算数两个数组比较的所有可能性。
但当我看了2个例子,我就懵了,为啥guess与answer完全一样时小A就猜对了三次,当guess与answer只有索引为1的元素相同时小A只猜对了第二次。可见题目本意就是想我们按顺序依次比较元素,直到比较完成看有几次相等而已(这真的是我在leetcode遇到最简单的题目了)。
使用一次遍历来解决:
/**
* @param {number[]} guess
* @param {number[]} answer
* @return {number}
*/
var game = function (guess, answer) {
let sum = 0,
k = guess.length - 1;
while (k >= 0) {
if (guess[k] === answer[k]) {
sum++;
};
k--;
};
return sum;
};
使用两次遍历来解决:
/**
* @param {number[]} guess
* @param {number[]} answer
* @return {number}
*/
var game = function (guess, answer) {
let sum = 0;
for(let i = 0;i < guess.length;i++ ){
for(let j = 0;j < answer.length;j++){
// 索引相同,且元素相同则自增
if(guess[i] === answer[j] && i === j){
sum++;
};
};
};
return sum;
};
再或者,不用遍历,来自评论区的暴力解题法:
/**
* @param {number[]} guess
* @param {number[]} answer
* @return {number}
*/
var game = function (guess, answer) {
return (guess[0] === answer[0]) + (guess[1] === answer[1]) + (guess[2] === answer[2]);
};
这里正是利用布尔值在计算中,true会转换成1,false转换成为0的特性,不得不佩服网友的脑洞...
由于这题很简单,那么就说到这了。
相关文章
- js 生成4位随机数及Js知识汇总
- JS 逆向 --- 过无限debugge、hook、js混淆还原、控制流混淆
- JS Leetcode 70. 爬楼梯 题解分析,斐波那契数列与动态规划
- JS Leetcode 179. 最大数 题解分析,sort a-b与b-a的区别,sort排序原理解析
- JS Leetcode 154. 寻找旋转排序数组中的最小值 II 题解分析
- JS Leetcode 81. 搜索旋转排序数组 II 题解,补救二分法的可行性
- JS Leetcode 80. 删除有序数组中的重复项 II题解,常规解法与快慢双指针做法
- JS Leetcode 496. 下一个更大元素 I 更清晰的图解单调栈做法
- JS leetcode 买卖股票的最佳时机 题解分析,我离职了。
- JS leetcode 有多少小于当前数字的数字 解题分析,你应该了解的桶排序
- JS leetcode 合并两个有序数组 解题分析
- JS leetcode 检查单词是否为句中其他单词的前缀 解题分析,活用startsWith方法
- JS leetcode 删除排序数组中的重复项 题解分析
- JS leetcode 杨辉三角Ⅱ 题解分析
- JS leetcode 寻找数组的中心索引 题解分析
- JS leetcode 最长公共前缀 题解分析
- JS leetcode 两数之和解答思路分析
- 【HarmonyOS】【JS】【布局】鸿蒙js开发input 输入框弹出输入法时上方布局被挤扁?
- JS教程之使用 P5.js 构建一个贪吃蛇游戏(教程含源码)
- JS教程之Electron.js设计强大的多平台桌面应用程序的好工具
- 前后端加密解密 【JS加密模块(md5 、 crypto 、 crypto-js、jsencrypt) python RSA加密解密(pycryptodome )模块安装与使用】
- JS模板引擎handlebars.js的简单使用
- 【cocos2d-js官方文档】五、Cocos2d-JS v3.0的新Action API
- leetcode 547. Number of Provinces 省份数量(中等)