【发布时间】:2017-06-27 18:18:42
【问题描述】:
以下代码是java语言:
int[] array = {1,2,2,3,3,3,2,2,1};
int k = 2;
我需要做的是找到连续出现 k 次以上的值(在本例中为 3)。 occurs>k 只能有一个值,如果不存在这样的值,print -1
解释:
1 只连续出现 1 次。
2出现2次但不是>k。
3出现3次,即>k。由于只能有一个可能的答案,您可以停止在更多值中搜索答案并打印 3。
代码时间限制为0.25s
更新:到目前为止我所做的尝试
import java.util.*;
import java.lang.*;
import java.io.*;
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
int[] array = {1,2,2,3,3,3,2,2,1};
int k=2;
int result = -1;
for(int lom =0;lom<array.length-1;lom++){
int temp = 0;
int lo=lom;
while(array[lo]==array[lom]){
temp+=1;
if(lo<array.length){lo++;}else{break;}
}
if(temp>k){
result = array[lom];
break;
}
}
System.out.println(result);
}
}
当我尝试通过这个解决大约 10 个查询时,它需要 2 秒。我必须在 1 中完成它。您能否提出一些优化代码的方法,以便我可以研究它,然后再试一次。
【问题讨论】:
-
好的,到目前为止你尝试了什么?
-
我投票决定将此问题作为题外话结束,因为它似乎是一个剪切和粘贴的作业,没有花费一分精力。
-
ideone.com/e.js/ZZT3Ay
-
我尝试了很多,我的代码有效。唯一的问题是当我尝试用它解决大约 10 个查询时需要很长时间
标签: java arrays performance loops time