我在哪里找到Noble Integer错误?
问题描述:
问题陈述:给定一个整数数组,发现如果一个整数p的阵列,使得如果找到这样的整数整数更大比数组p的数量等于为P 返回1,否则返回的存在 - 1。我在哪里找到Noble Integer错误?
我的代码:
public int solve(ArrayList<Integer> A) {
Collections.sort(A);
for(int i=A.size()-1;i>=0; i--){
if(A.get(i) == (A.size()-i-1))
return 1;
}
return -1;
}
但它给了一些输入,我无法理解intuitively.i.e,返回1时,它应该返回-1错误输出。任何人都可以指出我的错误吗?
答
感谢所有评论员。我没有仔细观察当某些值相同时会发生什么。我找到的正确解决方案如下。
public int solve(ArrayList<Integer> A) {
Collections.sort(A);
for(int i=A.size()-1;i>=0; i--){
if(i<A.size()-1 && A.get(i) == A.get(i+1))continue;
if(A.get(i) == (A.size()-i-1))
return 1;
}
return -1;
}
如果有序阵列是不是唯一的东西会发生...... – Mukit09
@ Mukit09将返回-1,如果所有元素都是相同的阵列中。 –
你确定吗?你有没有检查过这种输入? – Mukit09