java - 编写一个程序,返回一个新数组,该数组包含所有大于java数组中第一个值的值
问题描述
编写一个程序,返回一个新数组,该数组包含所有大于数组中第一个值的值。如果数组中没有大于第一个值的值,则返回一个空数组。如果数组为空,则返回一个空数组。
我这样解决这个问题:
public class RayGetFirst
{
//method go will return an array
//containing all values > the first value in the array
//from the array parameter ray
public static int[] go(int[] ray)
{
int first = ray[0];
int[] result = new int[];
for( int i = 1; i<ray.length; i++)
{
if(first < ray)
{
return result;
}
}
return result;
}
}
首先,我将数组的第一个索引分开,然后开始 for-loop for 1 index not from zero,然后将第一个数组与数组的其余部分进行比较。但我并没有以正确的答案结束。任何人都可以用我使用的相同逻辑来纠正这个问题吗?
该计划的亚军:
import java.util.*;
class Main
{
public static void main(String[] args)
{
RayGetFirst rt = new RayGetFirst();
System.out.println( rt.go( new int[]{-99,1,2,3,4,5,6,7,8,9,10,5} ) );
System.out.println( rt.go( new int[]{10,9,8,7,6,5,4,3,2,1,-99} ) );
System.out.println( rt.go( new int[]{10,20,30,40,50,-11818,40,30,20,10} ) );
System.out.println( rt.go( new int[]{32767} ) );
System.out.println( rt.go( new int[]{255,255} ) );
System.out.println( rt.go( new int[]{9,10,-88,100,-555,2} ) );
System.out.println( rt.go( new int[]{10,10,10,11,456} ) );
System.out.println( rt.go( new int[]{-111,1,2,3,9,11,20,1} ) );
System.out.println( rt.go( new int[]{9,8,7,6,5,4,3,2,0,-2,6} ) );
System.out.println( rt.go( new int[]{12,15,18,21,23,1000} ) );
System.out.println( rt.go( new int[]{250,19,17,15,13,11,10,9,6,3,2,1,0} ) );
System.out.println( rt.go( new int[]{9,10,-8,10000,-5000,-3000} ) );
}
}
这个跑步者的正确答案:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5]
[]
[20, 30, 40, 50, 40, 30, 20]
[]
[]
[10, 100]
[11, 456]
[1, 2, 3, 9, 11, 20, 1]
[]
[15, 18, 21, 23, 1000]
[]
[10, 10000]
谢谢
解决方案
您需要返回一个填充了值 > 的数组,而不是提供的数组中的第一个。
public class RayGetFirst {
//method go will return an array
//containing all values > the first value in the array
//from the array parameter ray
public static int[] go(int[] ray) {
int first = ray[0];
int k = 0; // set an index
int[] result = new int[ray.length]; // allocate storage for values.
for( int i = 1; i<ray.length; i++) {
if(first < ray[i]) {
result[k++] = ray[i]; // copy values
}
}
// now establish a new array of length k
int [] ret = new int[k];
// and copy the first `k` values in `result` to that array.
// Then return that array.
for (int i = 0; i < k; i++) {
ret[i] = result[i];
}
return ret;
}
}
推荐阅读
- sql - SQL 将查询结果中的多行插入到现有表的单个列中
- rust - 如何调用具有多个签名者的 solana 程序
- swift - NSToolbarItem 图像在运行的应用程序中看起来很糟糕,但在界面生成器中却没有
- ibmhttpserver - 进行后端调用时由 IHS 验证到期日期
- javascript - Vue.js 中的原始表达式:动态计算类中的错误
- java - 通过 RestTemplate 使用 Spring Paged 响应会给出不存在的错误
- tensorflow - InvalidArgumentError:尝试读取字符串时数据太短 [[{{node DecodeWav}}]] [Op:IteratorGetNext]
- database - TDengine 无法删除节点,总是显示正在删除
- c - 当本地构建成功时,调试 Azure Pipeline 失败构建的正确方法是什么?
- android - BMI Calculator in Kotlin