Java 我在哪里找不到整数?

Java 我在哪里找不到整数?,java,integer,Java,Integer,问题陈述:给定一个整数数组,查找数组中是否存在整数p,使得数组中大于p的整数数等于p 如果找到这样的整数,则返回1,否则返回-1 我的代码: 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))

问题陈述:给定一个整数数组,查找数组中是否存在整数p,使得数组中大于p的整数数等于p 如果找到这样的整数,则返回1,否则返回-1

我的代码:

     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;
    }
public int solve(数组列表A){
收集.分类(A);
对于(int i=A.size()-1;i>=0;i--){
如果(A.get(i)=(A.size()-i-1))
返回1;
}
返回-1;
}

但它对一些我无法直观理解的输入给出了错误的输出,即当它应该返回-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;
}
public int solve(数组列表A){
收集.分类(A);
对于(int i=A.size()-1;i>=0;i--){

如果(i请注意这个用Raku语言编写的解决方案,这是一种你永远不知道自己想要的语言

sub noble( @n ) 
{
    # By @HrBollermann (me)
    @n.sort.pairs.grep({ .value + .key == @n.end }).first.value // -1;
}

# Or even shorter,

sub noble( @n ) 
{
    # By @smokemachine
    @n.sort(-*).pairs.grep({ .value == .key }).first.value // -1;
}

如果排序后的数组不唯一会发生什么…@Mukit09将返回-1,如果数组的所有元素都相同。你确定吗?你检查过这种输入了吗?这个数组的正确结果是什么?
[1,2,2,3]
重复元素与此毫无关系。你的代码对我有效,至少在我测试过的输入上是如此。我没有否决你,但你需要让你的问题重现。没有人会接受那50个数字来测试你的代码。给我们一个重现的例子,说明你的代码失败的地方。如果我们在打高尔夫:
@n.sort(-*).pairs.grep({.value==.key}).head.value/-1;
少一个字符。
。first
实际上是一个短路
。grep
通常与匹配器一起使用。