TwoSum 问题,大数据测试的时候不通过

题目描述

这个是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);
    }
}

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

阅读 815
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题