2017-08-03 78 views
-1

问题陈述:给定一个整数数组,发现如果一个整数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错误输出。任何人都可以指出我的错误吗?

+4

如果有序阵列是不是唯一的东西会发生...... – Mukit09

+0

@ Mukit09将返回-1,如果所有元素都是相同的阵列中。 –

+0

你确定吗?你有没有检查过这种输入? – Mukit09

回答

2

感谢所有评论员。我没有仔细观察当某些值相同时会发生什么。我找到的正确解决方案如下。

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; 
}