题目描述
这个是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);
}
}