如果数组中至少某处连续三个数字升序,如何返回true,否则返回false
public static boolean tripleUp(int[] array) {
int count = 0;
for (int i = 0; i < array.length - 1; i++) {
if(array[i] < array[i + 1] && array[i + 1] == array[i] + 1){
count++;
if(count < 2){
return false;
}
}
}
return true;
}
tripleUp([1, 4, 5, 6, 2]) → true
tripleUp([1, 2, 3]) → true
tripleUp([1, 2, 4]) → false
有人可以帮我吗?
答案 0 :(得分:1)
非常简单
public static boolean tripleUp(int[] array)
{
for (int i = 0; i < array.length - 2; ++i) {
if (array[i+1] == array[i] + 1 && array[i+2] == array[i] + 2) {
return true;
}
}
return false;
}
答案 1 :(得分:0)
怎么样?
static boolean inSeq(int[] arr, int n)
{
if(arr == null || arr.length < n) return false;
if(n <= 1) return true;
for(int i=1, j=0; i <= arr.length; i++)
{
if(i == arr.length || arr[i] == arr[i-1]+1)
{
if(i - j == n) return true;
}
else
{
j = i;
}
}
return false;
}
测试:
public static void main(String[] args)
{
int[][] tests = {
{1, 4, 5, 6, 2},
{1, 2, 3},
{1, 2, 4}
};
for(int[] test : tests)
System.out.printf("%s : %b\n", Arrays.toString(test), inSeq(test, 3));
}
输出:
[1, 4, 5, 6, 2] : true
[1, 2, 3] : true
[1, 2, 4] : false