第一次参加美团的线上笔试,忘记做模拟题,导致笔试题看到不是leetcode的这种情况拿不到输入值,耽误了几分钟,写一手博客骂一下自己,顺便说一下平时在自己本地ide上怎么模拟
Vscode安装赛码网模拟
先安装一个readline-sync插件
npm install readline-sync
然后新建一个js,头文件引入
var __readline = require('readline-sync')
__readline.setDefaultOptions({ prompt: '' })
var read_line = __readline.prompt
(以下代码可以直接复制到赛码网上即可)
然后就可以拿数据了:比如
var n = read_line() //获取第一行数据
这里的read_line()获得是是string类型,要转成自己想要的数据类型,比如:
var line; //获取数据
while ((line = read_line()) != '') {
//字符串转成数组
let arr = line.split(' ').map(Number);
let res = myfunction(n, arr); //配合上面的n
console.log(res);//输出
}
那如果题目输入是输入n个项目,然后输入项目长度和项目呢?
比如:
输入T(T个数组)
输入n(比如5)(数组长度)
输入数组内容 1 2 3 4 5
在输入n(比如4)
输入数组内容 4 6 2 5 7
var A = []
var T = parseInt(read_line())
while (T--) {
var n = parseInt(read_line())
for (let i = 0; i < n; i++) {
var line = read_line()
let arr = line.split(' ').map(Number);
A.push(arr)
break; //关键在于跳出n
}
}
//此时A就可以保存获取的数组了
//下面就能对获取的数组进行你的function
用0作为结束符号
while(true){
var num = parseInt(readline());
if(num == 0){
break;
}
console.log(solution(num))
}
function solution(num){
let res = 0;
while(num>=3){
let emp = Math.floor(num/3)
res += emp
num = num%3 + emp;
if(num == 2){
num = 3;
}
}
return res;
}