编程

1、找出n个数里最小的k个

输入描述:
每个测试输入包含空格分割的n+1个整数,最后一个整数为k值,n不超过100。
输出描述:
输出n个整数里最小的k个数。升序输出
示例1
输入
3 9 6 8 -10 7 -11 19 30 12 23 5
输出
-11 -10 3 6 7

var readline = require('readline');
const rl = readline.createInterface({
        input: process.stdin,
        output: process.stdout
});
rl.on('line', function(line){
    var arr=line.split(' ').map(function(x){return parseInt(x)});
    var k=arr.splice(arr.length-1,1)[0];
    arr.sort(function(a,b){return a-b;});
    var result=arr.splice(0,k);
    console.log(result.join(' '));
});

2、输入n个整数,输出出现次数大于等于数组长度一半的数。

输入描述:
每个测试输入包含 n个空格分割的n个整数,n不超过100,其中有一个整数出现次数大于等于n/2。
输出描述:
输出出现次数大于等于n/2的数。
示例1
输入
3 9 3 2 5 6 7 3 2 3 3 3
输出
3

var readline=require('readline');
const rl=readline.createInterface({
    input:process.stdin,
    output:process.stdout
})
rl.on('line',function(line){
    var arr=line.split(' '),
    obj={},
    result=[],
    k=Math.floor(arr.length/2);
    for(var i=0;i<arr.length;i++){
        if(!obj[arr[i]]){
            obj[arr[i]]=1;
        }else{
            obj[arr[i]]++;
            if(obj[arr[i]]>=k){
                result.push(arr[i]);
            }
        }
    }
    console.log(result.join(' '))
})

3、度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少?

输入描述:
首先输入一个正整数N(N <= 50),接下来输入N个数表示每顶帽子的价格(价格均是正整数,且小于等于1000)
输出描述:
如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1
示例1
输入
10
10 10 10 10 20 20 30 30 40 40
输出
30

var n=parseInt(readline());
var arr=readline().split(' ').map(x=>parseInt(x));
arr.sort(function(a,b){return a-b;});
var obj={},count=0,result;
for(var i=0;i<arr.length;i++){
    if(!obj[arr[i]]){
        obj[arr[i]]=true;
        count++;
        if(count==3){
            result=arr[i];
            break;
        }
    }
}
if(count==3){
    print(result);
}else{
    print(-1);
}

4 、考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:

1.根据字符串的字典序排序。例如:
“car” < “carriage” < “cats” < “doggies < “koala”
2.根据字符串的长度排序。例如:
“car” < “cats” < “koala” < “doggies” < “carriage”
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。
输入描述:
输入第一行为字符串个数n(n ≤ 100)
接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成
输出描述:
如果这些字符串是根据字典序排列而不是根据长度排列输出”lexicographically”,
如果根据长度排列而不是字典序排列输出”lengths”,
如果两种方式都符合输出”both”,否则输出”none”
示例1
输入
3
a
aa
bbb
输出
both

var readline = require('readline');
const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
});
var token = [],
    boo1=true,
    n=0,
    countLine=1,
    boo2=true;
rl.on('line', function(line) {
    if(countLine===1){
        n=parseInt(line);
        countLine++;
    }else{
        token.push(line);
        if(countLine===n+1){
            for(var i=0;i<n;i++){
                if(i>0){
                    if(token[i] <= token[i-1]){
                        boo1=false;
                    }
                    if((token[i]).length <= (token[i-1]).length){
                        boo2=false;
                    }
                 }
            }
            if( boo1 && boo2){
                console.log("both");
            }else if(boo1){
                console.log("lexicographically");
            }else if(boo2){
                console.log("lengths");
            }else{
                console.log("none");
            }
        }else{
            countLine++;
        }
    }

});

5、有一片1000*1000的草地,小易初始站在(1,1)(最左上角的位置)。小易在每一秒会横向或者纵向移动到相邻的草地上吃草(小易不会走出边界)。大反派超超想去捕捉可爱的小易,他手里有n个陷阱。第i个陷阱被安置在横坐标为xi ,纵坐标为yi 的位置上,小易一旦走入一个陷阱,将会被超超捕捉。你为了去解救小易,需要知道小易最少多少秒可能会走入一个陷阱,从而提前解救小易。

输入描述:
第一行为一个整数n(n ≤ 1000),表示超超一共拥有n个陷阱。
第二行有n个整数xi,表示第i个陷阱的横坐标
第三行有n个整数yi,表示第i个陷阱的纵坐标
保证坐标都在草地范围内。
输出描述:
输出一个整数,表示小易最少可能多少秒就落入超超的陷阱
示例1
输入
3
4 6 8
1 2 1
输出
3

var readline=require("readline");
const el=readline.createInterface({
    input: process.stdin,
    out: process.stdout
})
var tokens=[],
    countLine=1,
    result=[];
el.on("line",function(line){
    tokens.push(line);
    if(countLine==3){
        var n=parseInt(tokens[0]),
            x=tokens[1].split(" ").map(function(x){return parseInt(x)}),
            y=tokens[2].split(" ").map(function(x){return parseInt(x)});
        for(var i=0; i < n; i++){
            result.push(x[i]+y[i]-2);
        }
        result.sort(function(a,b){return a-b;});
        console.log(result[0]);
    }else{
        countLine++;
    }
})

6、今天的计算机课上,老师给同学们出了一道题:

输入n个数,请将其中的偶数的二进制反转。
eg:输入1 6 5
其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.
小贱君最近脑子不怎么好使,想了半天也没想出来如何做,最后他向你寻求帮助了,帮帮可怜的小贱君吧!
输入描述:
输入包含多组测试数据。
对于每组测试数据:
N — 输入的数字个数
N个数:a0,a1,…,an-1
保证:
1<=N<=3000,0<=ai<=INT_MAX.
输出描述:
对于每组数据,输出N个整数。
示例1
输入
5
1 3 10 6 7
6
26 52 31 45 82 34
输出
1 3 5 3 7
11 11 31 45 37 17

var readline = require('readline'); 
rl = readline.createInterface({ 
      input: process.stdin, 
      output: process.stdout 
  }); 
  var n = 0; 
  rl.on('line', function(line) { 
      var data = line.trim().split(' '); 
      var result=[];
      if(data.length == 1) { 
          n = parseInt(data[0]); 
      }else if(data.length == n) { 
          result = data.map(function(val, index) { 
              if(val % 2== 0) { 
                  return parseInt(parseInt(val).toString(2).split('').reverse().join(''), 2).toString(10);
              }else{ 
                  return val; 
              } 
          }); 
          console.log(result.join(' ')); 
          n = 0; 
      } 
});
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值