Objective c 在数组中查找连续整数
我正在寻找一种算法来确定数组中是否至少有三个连续的数字。我已经找到了一些,并对它们进行了一些调整,但它似乎不起作用。下面是我目前正在做的事情。在循环之前,使用Objective c 在数组中查找连续整数,objective-c,arrays,algorithm,Objective C,Arrays,Algorithm,我正在寻找一种算法来确定数组中是否至少有三个连续的数字。我已经找到了一些,并对它们进行了一些调整,但它似乎不起作用。下面是我目前正在做的事情。在循环之前,使用NSSortDescriptor对数组进行排序 例如: 在数组[5,610102103]中,三个连续的数字是[101102103] 下面的函数应该返回YES int c = [checkArray count]; int a,b = 0; int cnt = 1; for (int i = 1; i < c; i++) {
NSSortDescriptor
对数组进行排序
例如:在数组[5,610102103]中,三个连续的数字是[101102103]
下面的函数应该返回
YES
int c = [checkArray count];
int a,b = 0;
int cnt = 1;
for (int i = 1; i < c; i++)
{
a = [[checkArray objectAtIndex:i] intValue];
b = [[checkArray objectAtIndex:i-1] intValue] - 1;
if (a == b)
{
cnt++;
if (cnt == 3)
return YES;
} else {
cnt = 1;
}
}
return NO;
int c=[checkArray count];
int a,b=0;
int-cnt=1;
for(int i=1;i
您应该能够执行以下操作:
for (int i = 1; i < checkArray.count-1; i++)
{
int lower = [checkArray[i-1] intValue] +1;
int mid = [checkArray[i] intValue];
int upper = [checkArray[i+1] intValue] -1;
if (lower == mid && mid == upper) {
return YES;
}
}
return NO;
for(int i=1;i
您只需检查每个号码一次。什么都不用数。您检查的每个数字都是三个数字的中间。如果前面的一个和后面的一个分别小一个和大一个,那么这三个数字是连续的。您应该能够执行以下操作
for (int i = 1; i < checkArray.count-1; i++)
{
int lower = [checkArray[i-1] intValue] +1;
int mid = [checkArray[i] intValue];
int upper = [checkArray[i+1] intValue] -1;
if (lower == mid && mid == upper) {
return YES;
}
}
return NO;
for(int i=1;i
您只需检查每个号码一次。什么都不用数。您检查的每个数字都是三个数字的中间。如果前面的数字和后面的数字分别小一和大一,则这三个数字是连续的。这是另一种方法。我还没有测试过,但你应该知道
int c = [checkArray count];
int a,b,c = 0;
a = [[checkArray objectAtIndex:0] intValue];
b = [[checkArray objectAtIndex:1] intValue];
for (int i = 2; i < c; i++)
{
c = [[checkArray objectAtIndex:i] intValue];
if (a+2 == b+1 && b+1 == c)
return YES;
a = b;
b = c;
}
return NO;
int c=[checkArray count];
int a,b,c=0;
a=[[checkArray objectAtIndex:0]intValue];
b=[[checkArray objectAtIndex:1]intValue];
for(int i=2;i
它的另一个优点是易于优化。这是一种替代方法。我还没有测试过,但你应该知道
int c = [checkArray count];
int a,b,c = 0;
a = [[checkArray objectAtIndex:0] intValue];
b = [[checkArray objectAtIndex:1] intValue];
for (int i = 2; i < c; i++)
{
c = [[checkArray objectAtIndex:i] intValue];
if (a+2 == b+1 && b+1 == c)
return YES;
a = b;
b = c;
}
return NO;
int c=[checkArray count];
int a,b,c=0;
a=[[checkArray objectAtIndex:0]intValue];
b=[[checkArray objectAtIndex:1]intValue];
for(int i=2;i
它还具有易于优化的附加优点。
c
是计数和第三个值。c
是计数和第三个值。