我有一个数组,例如包含值123456,显然包含超过3个连续值。
如果数组中至少包含3个连续值,我想要一个返回true的方法,提前谢谢。
例如:
972834 - 返回true(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
感谢所有帮助人员,感谢
答案 0 :(得分:2)
最直接的解决方案是简单地循环浏览项目,并检查接下来的两项:
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;
}
另一个解决方案是遍历项目并计算连续项目:
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;
}
答案 1 :(得分:1)
应该标记作业,我假设。
在伪代码中,你会想要一些
的内容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
编辑:假设你有一个int数组。如果它是一个字符串,你将不得不使用charAt(position)行的东西,然后通过减去'0'或使用parseInteger函数将char转换为十进制数
误导性部分的更新
为了做到这一点,为了简单起见,我会创建一个与字符串长度相同的数组
int arr[array.length];
然后循环遍历字符串数组中的每个项目,同时在数字落在
的位置递增arr(假设一个char数组,单个数字) for(int i = 0; i&lt; array.length; i ++) arr [array [i] - '0'] ++;
然后通过arr检查连续三个数字
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;
答案 2 :(得分:1)
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
答案 3 :(得分:0)
迟到了聚会,但这是一个解决方案。
function checkConsecutiveExists(arr) {
for (let i = 0; i < arr.length; i++) {
if (checkNumLast(arr, arr[i]) || checkNumMid(arr, arr[i]) || checkNumFirst(arr, arr[i])) {
return true;
}
}
return false;
}
function checkNumLast(arr, num) {
return arr.includes(num - 2) && arr.includes(num - 1);
}
function checkNumMid(arr, num) {
return arr.includes(num - 1) && arr.includes(num + 1);
}
function checkNumFirst(arr, num) {
return arr.includes(num + 1) && arr.includes(num + 2);
}
console.log(checkConsecutiveExists([9, 7, 2, 8, 3, 4]));
console.log(checkConsecutiveExists([1, 9, 2, 6, 4, 50]));
这是蛮力的解决方案,所以不是最佳解决方案。