这个复杂算法专题是我在codewars上面来练习和锻炼自己的算法水品的,可能这个算法复杂写,但是也是有可以借鉴和吐槽的地方
那么今天我们还是由一个问题入手
Bob is preparing to pass IQ test. The most frequent task in this test is to find out which one of the given numbers differs from the others
. Bob observed that one number usually differs from the others inevenness. Help Bob — to check his answers, he needs a program that among the given numbers finds one that is different in evenness, and return a position of this number.
!
Keep in mind that your task is to help Bob solve a real IQ test
, which means indexes of the elements start from1 (not 0)
function iqTest(numbers){
var textNumber=numbers.split(" ");
for (var i=0;i<i.length;i++)
{
textNumber[i]=parseInt(textNumber[i]);
}
if(textNumber.length==3){
if(textNumber[0]!=textNumber[1] && textNumber[0]!=textNumber[2] )
{
return 1;
}
if(textNumber[1]!=textNumber[0] && textNumber[1]!=textNumber[2] )
{
return 2;
}
if(textNumber[2]!=textNumber[0] && textNumber[2]!=textNumber[1] )
{
return 3;
}
}
else if(textNumber.length<3){return false;}
else{
var cha=[];
for (var j=0;j<textNumber.length-1;j++)
{
cha.push(textNumber[j+1]-textNumber[j]);
}
if(deletesame(cha).length==2){
if((textNumber[1]-textNumber[0])!=(textNumber[2]-textNumber[1]))
{
return 1;
}
if((textNumber[textNumber.length-1]-textNumber[textNumber.length-2])!=(textNumber[2]-textNumber[1]))
{
return textNumber.length-1;
}
}
if(deletesame(cha).length==3){
var finarr=deletesame(cha);
finarr.sort(compare);
for(var fin=0;fin<textNumber.length;fin++){
if(textNumber[fin+1]-textNumber[fin] !=finarr[1])
{
return fin+2;
}
}
}
}
function deletesame(arr){
var temp=[];
temp[0]=arr[0];
for(var i=1;i<arr.length;i++)
{
var n=0;
for(var j=0;j<temp.length;j++){
if(arr[i]!=temp[j])
{n++};
}
if(n==temp.length)
{temp.push(arr[i]);}
}
return temp;
}
function compare(num1,num2){
return num1-num2;
}
}