Javascript 如果数组较大,则条件不起作用

Javascript 如果数组较大,则条件不起作用,javascript,arrays,algorithm,data-structures,Javascript,Arrays,Algorithm,Data Structures,我是一个竞争性编程的初学者,我一直在努力解决黑客的一个问题。我的问题只解决了第一个测试用例,当我发现错误时,如果部件在特定测试中不能正常工作,那么下面给出了测试用例以及程序 1 22 289 558 271 15 492 853 988 834 766 573 316 959 192 7 730 277 631 97 717 185 514 86 我的问题 function main(input) { //Enter your code here var data=input

我是一个竞争性编程的初学者,我一直在努力解决黑客的一个问题。我的问题只解决了第一个测试用例,当我发现错误时,如果部件在特定测试中不能正常工作,那么下面给出了测试用例以及程序

  1
  22
  289 558 271 15 492 853 988 834 766 573 316 959 192 7 730 277 631 97 717 
  185 514 86
我的问题

function main(input) {
//Enter your code here
var data=input.split("\n"),templen=1,temparr=2,X,arr,len,temp,sight,min=0,ans;
var T=parseInt(data[0]);
for(var i=0;i<T;i++) {
    min=0;
    len=parseInt(data[templen]);
    arr=data[temparr].split(" ");
    arr.map(function(x) {
        return parseInt(x);
    });
    if(len===1) {
        ans=1;
    }
    //Looping from the first array element
    for(var j=0;j<len;j++) {
       temp=j-1;
       X=0;
       console.log("Value is " + j + " Array value is "+ arr[j]);
       //A while loop to find out if the current element is greater than 
       previous element it goes till the beginning of the array
       while(temp>=0) {
       //If the element is greater will increment X value
           if(arr[j]>arr[temp]) {
                X=X+1;
                console.log("Greater Temp arr "+ arr[temp]);
                temp--;
           }
        //If the element is smaller it will break out the while loop
           else {
                X=X+1;
                break;
           }
       }
       temp=j+1;
       //A while loop to find out if the current element is greater than 
       previous element it goes till the end of the array
       while(temp<len) {
       //If the element is greater will increment X value 
         of the array
           if(arr[j]>arr[temp]) {
                X=X+1;
                console.log("Temp arr "+ arr[temp]);
                temp++;
           }
           //If the element is lesser it will break out the while loop
           else {
                X=X+1;
                break;
           }
       }
       sight=X*(j+1);
       console.log("Sight is "+ sight + " X is " + X + " J is "+ j + " array value is " + arr[j]);
       if(sight>min) {
           min=sight;
           ans=j+1;
       }
    }
    console.log(ans);
    templen+=2;
    temparr+=2;
}
}

process.stdin.resume();
process.stdin.setEncoding("utf-8");
var stdin_input = "";

process.stdin.on("data", function (input) {
stdin_input += input;
});

process.stdin.on("end", function () {
main(stdin_input);
});
主功能(输入){
//在此处输入您的代码
var data=input.split(“\n”),templen=1,temparr=2,X,arr,len,temp,sight,min=0,ans;
var T=parseInt(数据[0]);
对于(变量i=0;iarr[temp]){
X=X+1;
控制台日志(“更高的温度arr”+arr[Temp]);
温度--;
}
//如果元素较小,则会中断while循环
否则{
X=X+1;
打破
}
}
温度=j+1;
//while循环,以确定当前元素是否大于
前一个元素,它一直到数组的末尾
while(temparr[temp]){
X=X+1;
控制台日志(“临时arr”+arr[Temp]);
temp++;
}
//如果元素较小,则会中断while循环
否则{
X=X+1;
打破
}
}
视线=X*(j+1);
log(“视线为“+视线+”X为“+X+”J为“+J+”数组值为“+arr[J]);
如果(视线>分钟){
最小值=视力;
ans=j+1;
}
}
控制台日志(ans);
templen+=2;
temparr+=2;
}
}
process.stdin.resume();
过程标准设置编码(“utf-8”);
var stdin_input=“”;
进程标准开启(“数据”,功能(输入){
标准输入+=输入;
});
process.stdin.on(“结束”,函数(){
主(标准输入);
});
如果你看一下arr[17],它是97,If条件是如何工作的,因为它不大于下一个元素arr[18],它是717,也不大于前一个元素arr[16],它是631,它如何通过这两个If条件。任何帮助都将不胜感激,谢谢


问题是

这只是一种方法,有两个
while
循环,一个用于计算前面的元素,另一个用于计算后面的元素

这个建议不是最优的,因为我想显示计数的中间结果集

var数据=[289558271,1599285398834766573316959192,773027761,977171717185514,86],
count=data.map(函数(a、i、aa){
var c=0,
p=i;
//检查前面的元素
而(p--&&aa[p]

。作为控制台包装{max height:100%!important;top:0;}
您显示了所有代码,没有注释。尝试隔离并指定您的问题。在这里,我们几乎无法理解HappeName从索引0循环我的数组中的每个元素,然后执行一个操作,例如(数组[0],它是289)检查该元素是否大于下一个元素(第二个while循环直到数组末尾),我将增加X值和上一个元素(先循环,直到数组开始)我将增加X值。如果当前元素小于上一个元素,那么下一个元素的循环也将中断。现在我的问题是arr[17]它比上一个和下一个元素都小,但仍然增加了X值。这是怎么可能的?对我的代码添加注释Bro您可以将退出条件移动到while条件中。@NinaScholz抱歉,我不明白,请您详细说明一下好吗?嗨,谢谢,我可以知道这段代码的作用是什么吗?结果=计数。减少(函数(r,a,i,aa){return r&&aa[r]*(r+1)=司机i的高度,一个司机我就看不到另一个司机j以外的地方。”因此,如果我们举同样的例子,arr[0]289不大于arr[1](558)但是arr[0]可以看到他,所以他可以看到一辆车(arr[1]),所以X应该增加一次。除此之外,他看不到任何东西。