账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    TwoSum 问题,大数据测试的时候不通过
    • 师傅被妖怪抓走了2020-01-01 00:00
    33
    0

    题目描述

    这个是hackerrank上的题目
    https://www.hackerrank.com/ch...

    我的代码在以下数据的时候测试不通过。
    https://hr-testcases-us-east-...

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

        'use strict';
    
    process.stdin.resume();
    process.stdin.setEncoding('utf-8');
    
    let inputString = '';
    let currentLine = 0;
    
    process.stdin.on('data', inputStdin => {
        inputString += inputStdin;
    });
    
    process.stdin.on('end', function() {
        inputString = inputString.replace(/\s*$/, '')
            .split('\n')
            .map(str => str.replace(/\s*$/, ''));
    
        main();
    });
    
    function readLine() {
        return inputString[currentLine++];
    }
    function whatFlavors(cost, money) {
        const cpyarr = cost.slice(0);
        cost.sort((a,b)=>{
            return b-a;
        });    
       const start = findStartPoint(cost, money, 0); 
        // console.log(start);
       for(let i=start;i<cost.length;i++){
           if(cost[i]<money){
              let remain = money -  cost[i];
               let remainIndex = cost.indexOf(remain,i+1);
               if(remainIndex!=-1){
    
                    let first = cpyarr.indexOf(cost[i]);
                    let last = cpyarr.indexOf(cost[remainIndex]);
                    if(last === first){
                      last = cpyarr.indexOf(cost[remainIndex],first)+2;
                      first++;
                    }else{
                      last++;
                      first++;
                    };
                    let temp =0;
                    if(first>=last){
                      temp = first;
                      first = last;
                      last = temp;
                    };
                   return `${first} ${last}`
               }
           };
       }
       return `-1 -1`;
    }
    
    function findStartPoint(arr, money,startpoint){
        let newarr = arr.slice(0);
        let middle = Math.floor(newarr.length/2);
         if(newarr[middle]>money){
            return findStartPoint(newarr.splice(middle),money,middle);
         }else if(newarr[middle] === money){
              return middle;
         }else{
              return startpoint;
         }  
    }
    
    function main() {
        const t = parseInt(readLine(), 10);
    
        for (let tItr = 0; tItr < t; tItr++) {
            const money = parseInt(readLine(), 10);
    
            const n = parseInt(readLine(), 10);
    
            const cost = readLine().split(' ').map(costTemp => parseInt(costTemp, 10));
    
            const result = whatFlavors(cost, money);
            console.log(result);
        }
    }
    
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部