首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数组中的3个值是否连续?

检查数组中的3个值是否连续?
EN

Stack Overflow用户
提问于 2011-02-09 10:44:33
回答 4查看 11.3K关注 0票数 1

我有一个数组,例如,它包含值123456,显然它包含3个以上的连续值。

我想要一个方法,如果数组中至少包含3个连续的值,它将返回true,提前谢谢。

例如:

972834 -返回真(234)

192645 -返回true (456)

等等等等。

更新!:

我在java中有一个数组,它接受6个整数。例如nextTurn[],它在对数组进行排序时包含8 4 2 5 6 5-2 4 5 5 6 8

如果数组中有3个连续的数字,我如何让它返回true?

所以它会找到4 5 6

我还希望它返回整数在数组中的位置,因此对于原始数组8 4 2 5 6 5

它将返回,2 4 5或2 5 6

谢谢你们的帮助,非常感谢

EN

回答 4

Stack Overflow用户

发布于 2011-02-09 10:51:18

最直接的解决方案是简单地循环遍历这些项目,并检查下两个项目:

代码语言:javascript
复制
bool HasConsecutive(int[] a){
  for(int i = 0; i < a.Length - 2; i++) {
    if (a[i + 1] == a[i] + 1 && a[i + 2] == a[i] + 2) return true;
  }
  return false;
}

另一种解决方案是遍历项目并计算连续项目的数量:

代码语言:javascript
复制
bool HasConsecutive(int[] a){
  int cnt = 1;
  for (int i = 1; i < a.Length; i++) {
    if (a[i] == a[i - 1] + 1) {
      cnt++;
      if (cnt == 3) return true;
    } else {
      cnt = 1;
    }
  }
  return false;
}
票数 3
EN

Stack Overflow用户

发布于 2011-02-09 10:49:57

我猜应该是家庭作业。

在伪代码中,您将需要类似于

代码语言:javascript
复制
for int i = 0 to array.length - 2
    temp = array[i]
    if((array[i+1] == (temp + 1)) && (array[i+2] == (temp + 2)))
        return true
else return false

编辑:这是假设你有一个整数数组。如果它是一个字符串,则必须使用类似于charAt(位置)的内容,然后通过减去'0‘或使用parseInteger函数将字符转换为十进制数

误导性部件上的更新

为此,为了简单起见,我将创建一个与字符串长度相同的数组

代码语言:javascript
复制
int arr[array.length];

然后遍历字符串数组中的每一项,同时在数字所在的位置递增arr

(假设是字符数组,一位数) for( int i= 0;i< array.length;i++ ) arr[arrayi - '0']++;

然后对三个连续的数字进行arr检查

代码语言:javascript
复制
for( int i = 0; i < arr.length - 2; i++ )
    if( arr[i] >= 1 && arr[i+1] >= 1 && arr[i+2] >= 1 )
        return true;

return false;
票数 1
EN

Stack Overflow用户

发布于 2011-02-09 11:40:21

代码语言:javascript
复制
h = new hash table
for i in array
  if  i + 1 in h && i + 2 in h
    return i, i+1, i+2
  add i to h
return no-match
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4940799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档