输入描述: n * n 矩阵,
[[1,1,0],[1,1,0],[0,0,1]]
输出描述:整数
2
var broadcast = function(list) {
const count=[];// 存储能够连接的广播列表
for(let i=0;i<list.length;i++){
for(let j=i+1;j<list.length;j++){
if(list[i][j]==1){
if(count.length>0){
let flag = false;
count.map((item,index)=>{
if(item.includes(i)&&!item.includes(j)){
count[index].push(j);
}else if(item.includes(j)&&!item.includes(i)){
count[index].push(i);
}else if(!item.includes(i)&&!item.includes(j)){
flag=true;
}
})
if(flag){
count.push([i,j])
}
}else{
count.push([i,j])
}
}
}
}
for(let i=0;i<list.length;i++){
let flag=false;
count.map(item=>{
if(item.includes(i)){
flag=true
}
})
if(!flag){
count.push([i])
}
}
// count=[[0,1],[2]]
return count.length
};
console.log(broadcast([[1,1,0],[1,1,0],[0,0,1]])) // 2
[[1 , 2 , 10], [2 , 3 , 20],[2 , 5 , 25]]
5
输出描述:长度为n的数组
[10,55,45,25,25]
var corpFlightBookings = function(bookings, n) {
const count = new Array(n).fill(0);
bookings.map(item=>{
count[item[0]-1]+=item[2];
if(item[1]<n){
count[item[1]]-=item[2];
}
})
// count=[10,45,-10,-20,0]
return count.map((item,index)=>{
let sum=0;
while(index>=0){
sum+=count[index];
index--;
}
return sum;
})
};
console.log(corpFlightBookings([[1,2,10],[2,3,20],[2,5,25]])) //[10,55,45,25,25]
[1,2,3,5,7,9,10,12]
输出描述:字符串
1-3,5,7,9-10,12
var sort = function(arr) {
const newArr=[];
for(let i=0;i<arr.length;){
let j=i;
while(arr[j]+1===arr[j+1]&&j<arr.length){
j++
}
if(i!==j){
newArr.push(`${
arr[i]}-${
arr[j]}`);
i=j+1
}else{
newArr.push(arr[i])
i++;
}
}
return newArr.join(',')
};
// 1-3,5,7,9-10,12
console.log(sort([1,2,3,5,7,9,10,12]))
[ 1,.?! ] [ 2ABC ] [ 3DEF ]
[ 4GHI ] [ 5JKL ] [ 6MNO ]
[ 7PQRS ] [ 8TUV ] [ 9WXYZ ]
[ 0空 ]
注意:中括号[ ]仅为了表示键盘的分隔,不是输入字符。每个中括号中,位于首位的数字字符即是键盘的按键,按一下即可输入该数字字符。多次按同一个键,则输入的字符依次循环轮流,例如按两次3,则输入D;按5次7,则输入S;按6次2,则输入A。按键0的输入组合是0和空格字符,即按两次0输入空格。
你需要对于给定的按键组合,给出该组合对应的文本。
输入格式:
输入在一行中给出数个字符的按键组合(例如 999 表示按3次9),每个字符的按键组合之间用空格间隔,最后一个输入法组合之后以换行结束。输入数据至少包括一个字符的按键组合,且输入总长度不超过500个字符。
['22', '5555', '22', '666', '00', '88', '888', '7777', '4444', '666', '44']
输出格式:
在一行中输出该按键组合对应的文本。
ALAN TURING
var nineInput = function(arr) {
const button=["0 ","1,.?!","2ABC","3DEF","4GHI","5JKL","6MNO","7PQRS","8TUV","9WXYZ"];
let str='';
for(let i=0;i<arr.length;i++){
let num=arr[i][0];
let index=(arr[i].length>button[num].length?(arr[i].length%button[num].length):arr[i].length)-1
str+=button[num][index]
}
return str
};
console.log(nineInput(['22', '5555', '22', '666', '00', '88', '888', '7777', '4444', '666', '44']))
['1992 一 08 一 20 12 : 12 : 12 . 001 ','1992 一 08 一 20 12 : 12 : 12 . 003 ','1992 一 08 一 20 12 : 12 : 12 . 203 ','1992 一 08 一 21 12 : 12 : 12 . 001 ','1992 一 08 一 21 12 : 12 : 12 . 003']
输出描述:整数.
2
游戏开始! 从1号小朋友起,顺时针报数,从1报起。
即:1号小朋友报1,2号小朋友报2,3号小朋友报3, …
游戏规定,报到数字 m(1
游戏这样一直进行下去,直到圈中只剩下一个小朋友。
求最后剩下的小朋友的编号。
输入:两个整数,n 和 m。
输出:一个整数,表示最后剩下的小朋友的编号。
比如:
输入:
15 3
程序应该输出:
5
再比如:
输入:
7 4
程序应该输出:
2
var find = function(n,m) {
let arr=new Array(n).fill(true);
let count=0;// 数组下标
let index=0;// 报数记录
let total=n;// 已退出游戏人数
while(count<n&&total>1){
if(arr[count]){
if(index===m-1){
arr[count]=false;
index=0;
total--;
}else{
index++;
}
}
count++;
if(count===n){
count=0;
}
}
return arr.indexOf(true)+1
};
console.log(find(7,4))
var split=function(str,delim=''){
let newStr=[];
let temp=''
for(let i=0;i<str.length;){
if(delim.length>0){
let index=0;
while(index<delim.length&&str[i+index]===delim[index]){
index++;
}
if(index<delim.length){
temp+=str[i];
i++;
}else{
if(temp.length>0){
newStr.push(temp)
};
temp='';
i+=delim.length
}
}else{
newStr.push(str[i]);
i++;
}
}
if(temp.length>0){
newStr.push(temp)
}
return newStr;
}
// [a,b,c,e]
console.log(split('adbdcdedd','d'))
// 输入,说明index=[0,2,5],str='time#bell#'
['time','me','bell']
// 输出
10
var minimumLengthEncoding=function(words){
let newStr='';
let str=words.map(item=>{
let temp=''
for(let i=item.length-1;i>=0;i--){
temp+=item[i]
}
return temp;
}).sort();// 反转排序
for(let i=0;i<str.length;i++){
if(str[i+1]!==undefined){
if(str[i+1].indexOf(str[i])!==0){
newStr+=`#${
str[i]}`
}
}else{
newStr+=`#${
str[i]}`
}
}
return newStr.length;
}
console.log(minimumLengthEncoding(['time','me','bell']))
输入: [1,0,2]
输出: 5
解释: 你可以分别给这三个孩子分发 2、1、2 颗糖果。
示例 2:
输入: [1,2,2]
输出: 4
解释: 你可以分别给这三个孩子分发 1、2、1 颗糖果。
第三个孩子只得到 1 颗糖果,这已满足上述两个条件。
var candy = function(ratings) {
let arr=new Array(ratings.length).fill(1);
for(let i=1;i<ratings.length;i++){
if(ratings[i]>ratings[i-1]){
arr[i]=arr[i-1]+1;
}
}
for(let j=ratings.length-2;j>=0;j--){
if(ratings[j]>ratings[j+1]&&arr[j]<=arr[j+1]){
arr[j]=arr[j+1]+1;
}
}
let total=0;
for(let i=0;i<arr.length;i++){
total+=arr[i]
}
return total
};
console.log()candy([1,0,1])
var print = function(ratings) {
let arr=new Array(ratings.length).fill(0);
let index=1;
while(Math.max(...ratings)>0){
arr[ratings.indexOf(Math.max(...ratings))]=index;
index++;
ratings[ratings.indexOf(Math.max(...ratings))]=0;
}
return arr
};
// [1,5,3,4,2] 感觉过分简单,可能是我理解错误?
console.log(print([3,1,2,2,3]))
var print = function(ratings) {
let arr=new Array(5).fill(0);
for(let i=0;i<ratings.length;i++){
for(let j=0;j<5;j++){
arr[j]+=parseInt(ratings[i][j])
}
}
return Math.min(...arr)
};
// 1,arr=[ 4, 1, 4, 4, 3 ]
console.log(print(['10011','10110','01111','10111','10000','00100']))
var getMinusArray = function(a,b) {
let suma=0;
let sumb=0;
for(let i=0;i<a.length;i++){
suma+=a[i];
sumb+=b[i];
}
let min=Math.abs(suma-sumb);
for(let i=0;i<a.length;i++){
for(let j=0;j<b.length;j++){
let temp=0;
if(Math.abs(2*(b[j]-a[i])+suma-sumb)<min){
suma=suma-a[i]+b[j];
sumb=sumb-b[j]+a[i];
temp=a[i];
a[i]=b[j];
b[j]=temp;
min=Math.abs(suma-sumb)
}
}
}
return {
a,b}
};
console.log(getMinusArray([1, 3, 5 ,49],[0,2,4,18]))