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