笔试算法题

  • Post author:
  • Post category:其他


牛牛有4根木棍,长度分别为a,b,c,d。羊羊家提供改变木棍长度的服务,如果牛牛支付一个硬币就可以让一根木棍的长度加一或者减一。牛牛需要用这四根木棍拼凑一个正方形出来,牛牛最少需要支付多少硬币才能让这四根木棍拼凑出正方形。

//let arr=readline().split(" ");
let arr=["4","1","5","4"];
let newArr=[];
for(let i=0;i<arr.length;i++){
	let sum=0;
	for(let j=0;j<arr.length;j++){
		//求每个数与其他数字的差值和
		sum+=Math.abs(arr[i]-arr[j]);
	}
	newArr.push(sum)
}
//找到差值和最小的
console.log(Math.min.apply(Math,newArr));

牛牛的老师给出了一个区间的定义:对于x ≤ y,[x, y]表示x到y之间(包括x和y)的所有连续整数集合。例如[3,3] = {3}, [4,7] = {4,5,6,7}.牛牛现在有一个长度为n的递增序列,牛牛想知道需要多少个区间并起来等于这个序列。

例如:

{1,2,3,4,5,6,7,8,9,10}最少只需要[1,10]这一个区间

{1,3,5,6,7}最少只需要[1,1],[3,3],[5,7]这三个区间

输入描述:

输入包括两行,第一行一个整数n(1 ≤ n ≤ 50),

第二行n个整数a[i](1 ≤ a[i] ≤ 50),表示牛牛的序列,保证序列是递增的。

let n = parseInt(readline());
let lines = readline().split(" ");
let res = 1;
if(n>=1){
	for(let i = 0;i < lines.length - 1;i++) {	 
		//后一个数减前一个数不等于代表不是连续的数字,区间就会增加1
	    if((lines[i + 1] - lines[i]) !== 1) {
	       res++;
	    }	       
	}	 
	console.log(res);	
}

牛牛手中有三根木棍,长度分别是a,b,c。牛牛可以把任一一根木棍长度削短,牛牛的目标是让这三根木棍构成一个三角形,并且牛牛还希望这个三角形的周长越大越好。

//let arr=readline().split(" ");
let arr=["1","100","1"];
arr.sort((a,b)=>a-b);
while(parseInt(arr[0])+parseInt(arr[1])<=parseInt(arr[2])){
	arr[2]=parseInt(arr[2])-1;
	arr.sort((a,b)=>a-b);
	console.log(arr);
}
let sum=parseInt(arr[0])+parseInt(arr[1])+parseInt(arr[2]);
console.log(sum);

对于任意两个正整数x和k,我们定义repeat(x, k)为将x重复写k次形成的数,例如repeat(1234, 3) = 123412341234,repeat(20,2) = 2020.牛牛现在给出4个整数x1, k1, x2, k2, 其中v1 = (x1, k1), v2 = (x2, k2),请你来比较v1和v2的大小。

//let arr=readline().split(" ");
//let x1=arr[0],k1=parseInt(arr[1]),x2=arr[2],k2=parseInt(arr[3]);
let x1='1010',k1=3,x2='101010',k2=2;
let strArr1=[],strArr2=[];
for(let i=1;i<=k1;i++){
	strArr1.push(x1);
}
for(let j=1;j<=k2;j++){
	strArr2.push(x2);
}
let str1=parseInt(strArr1.join(""));
let str2=parseInt(strArr2.join(""));
if(str1==str2){
	console.log("Equal");
}else if(str1<str2){
	console.log("Less");
}else{
	console.log("Greater")
}



版权声明:本文为qq_41805715原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。