【发布时间】:2020-05-20 13:46:01
【问题描述】:
当我在 Google Kickstart 上提交代码时,我得到了第一个测试集的“错误答案”,即使示例输入和输出匹配。我真的不确定为什么 Google 不接受该代码。
The task 是给定一个 N 个正整数数组,求 K-倒计时的数量,其中 K-倒计时如果它的长度为 K 并且包含整数 K、K-1、K-2、...、2、1,则它是一个连续子数组。
输入:
输入的第一行给出了测试用例的数量,T.T 测试用例紧随其后。每个测试用例都以包含整数 N 和 K 的行开始。第二行包含 N 个整数。第i个整数是Ai。
输出:
对于每个测试用例,输出一行包含 Case #x: y,其中 x 是测试用例编号(从 1 开始),y 是她的数组中的 K 倒计时数。
示例输入:
3
12 3
1 2 3 7 9 3 2 1 8 3 2 1
4 2
101 100 99 98
9 6
100 7 6 5 4 3 2 1 100
样本输出:
Case #1: 2
Case #2: 0
Case #3: 1
我的逻辑非常简单:我有一个计数器变量 x,它从 K 开始,每当整数等于 x 时递减。如果发现倒计时(递减后x=0),则答案增加,x 设置为等于K。这是我的代码的症结所在:
for(int i=0; i<n; i++) {
arr[i]=sc.nextLong();
if(arr[i]==x)
x--;
else
x=k;
if(x==0) {
ans++;
x=k;
}
}
这是我的完整代码,以防出现任何微不足道的错误:
import java.util.Scanner;
public class Solution {
static int t;
static long n,k;
static long[] arr;
static Scanner sc=new Scanner(System.in);
public static void main(String[] args) {
t=sc.nextInt();
for(int i=1; i<=t; i++) {
n=sc.nextLong();
k=sc.nextLong();
System.out.println("Case #"+i+": "+solve());
}
sc.close();
}
public static long solve() {
long x=k;
long ans=0;
arr=new long[(int)n];
for(int i=0; i<n; i++) {
arr[i]=sc.nextLong();
if(arr[i]==x)
x--;
else
x=k;
if(x==0) {
ans++;
x=k;
}
}
return ans;
}
}
【问题讨论】:
标签: java