【发布时间】:2018-07-08 18:04:58
【问题描述】:
这是我为在每个大小为 k 的窗口中计算不同元素而编写的函数。但我得到错误的输入答案
n=17 , k=2
69 68 30 83 31 63 24 68 36 30 3 23 59 70 68 94 57
我得到输出 2 2 2 2 2 2 1 1 1 1 2 2 2 1 1 2
正确的输出是 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
如果在给定大小 (k= 2) 的窗口中没有相似的元素,如何输出 1?
void countDistinct(int arr[], int k, int n)
{
int i,j,l,m=0;
l=0;
while(m!=n){
int count=0;
m=k+l;
for( i=l;i<m;i++){
for( j=0;j<i;j++){
if(arr[i]==arr[j]){
break;
}
}
if(i==j){
count++;
}
}
l++;
System.out.print(count+" ");
}
【问题讨论】:
-
Stack Overflow 不是免费的调试服务,您应该展示您使用调试器或其他更简单的方法(例如调试打印语句)调试代码的尝试。您还可以分别测试代码的每个部分,以准确找出导致问题的代码部分,并创建minimal reproducible example。这不是您唯一一次在代码中遇到错误,学习调试程序比让别人为您找到错误对您的帮助要大得多。 idownvotedbecau.se/nodebugging最后,你甚至没有说明这是什么语言。
-
尝试在内部循环中添加一些
System.out.println语句,并转储变量的状态。更容易理解程序在做什么 -
"计算每个大小为 k 的窗口中的不同元素" 这意味着?您想知道数组中有多少个不同的值?
-
喜欢 Count different values in array in Java 或 Count the number of unique elements in a sorted array 或 StackExchange 上的许多其他帖子。