Java 返回数组中从最小到最大的3个整数,每个整数之间的差值相同
因此,我想插入一个数字数组,然后按从大到小的顺序返回3个数字,每个数字之间的差值相同 例子: 返回: 下面的代码是我的尝试。我为循环制作了3个Java 返回数组中从最小到最大的3个整数,每个整数之间的差值相同,java,arrays,Java,Arrays,因此,我想插入一个数字数组,然后按从大到小的顺序返回3个数字,每个数字之间的差值相同 例子: 返回: 下面的代码是我的尝试。我为循环制作了3个 循环: 第一个遍历了整个数组,选择了一个数字 第二个:对于剩余的数字,选择一个较小的数字。计算它们的差异 第三个:查找第三个数字,该数字较小,与第二个数字具有相同的差异 所以:(第一个数字-第二个数字)=(第二个数字-第三个数字) publicstaticvoidmain(字符串[]args){ int n; int num1; int num2;
循环:
- 第一个遍历了整个数组,选择了一个数字
- 第二个:对于剩余的数字,选择一个较小的数字。计算它们的差异
- 第三个:查找第三个数字,该数字较小,与第二个数字具有相同的差异
所以:(第一个数字-第二个数字)=(第二个数字-第三个数字)
publicstaticvoidmain(字符串[]args){
int n;
int num1;
int num2;
int num3;
int-dif;
扫描仪扫描=新扫描仪(System.in);
System.out.print(“您想从中选择多少个数字?”);
n=scan.nextInt();
int nums[]=新的int[n];
System.out.println(“请输入整数:”);
对于(int i=0;i,如果您正在寻找更快的一个,那么这适用于两个for
public static void main(String[] args) throws Exception {
List<Integer> integers = Arrays.asList(1, 3, 5, 9, 17);
Map<String, Integer> differenceMap = new HashMap<>();
for (int i = 0; i < integers.size(); i++) {
int first = integers.get(i);
for (int j = i + 1; j < integers.size(); j++) {
int second = integers.get(j);
int difference = second - first;
int next = difference + second;
if (integers.contains(next)) {
differenceMap.put(first + " - " + second + " - " + next, difference);
}
}
}
differenceMap.keySet().forEach(System.out::println);
}
publicstaticvoidmain(字符串[]args)引发异常{
List integers=Arrays.asList(1,3,5,9,17);
Map differenceMap=新的HashMap();
对于(int i=0;i
您需要先对数组进行排序。我可以问一下为什么需要对数组进行排序吗?@HumbleHermit您在帖子中写道7+5=14。我实际上在学校学到了7+5=12。@HumbleHermit:因为您需要迭代整个数组,并在几个步骤中找到差异(比如从1开始到n,在您的示例步骤=5中)如果3个后续成员之间的距离正好等于您的步长,则需要对数组进行排序,以便按递增步长进行扫描。噢,糟了。对不起,隔壁的Java家伙,我昨晚没睡,所以我觉得当时感觉不太好:(
2 7 12 because 2+5=7, 7+5=12.
public static void main(String[] args) {
int n;
int num1;
int num2;
int num3;
int dif;
Scanner scan = new Scanner(System.in);
System.out.print("How many numbers do you want to choose from? ");
n = scan.nextInt();
int nums[] = new int[n];
System.out.println("Please input the integers: ");
for (int i=0; i<n ;i++){
nums[i] = scan.nextInt();
}
System.out.println(" ");
for (int i=0; i<n; i++){
for (int j=i+1; j<n; j++){ //compare element i to the rest of the array
if(nums[j]<= nums[i]){ //if a num at j is smaller than num at i,
num3 = nums[i]; //then num3 is num at i
num2 = nums[j]; //and num2 is num at j
dif = num3 - num2; //find the difference
for(int k=i+j+1; k<n; k++){
if(num2 == (nums[k]+ dif)){ //if num2 is num at k + difference
num1 = nums[k]; //then num1 must be num at k
}
}
}
}
}
System.out.print(num3); //This is the effort printing them out
System.out.print(num2); //But for some reason I couldn't
System.out.print(num1); //even I initialized num3,2,1 outside of the for loop
scan.close(); //closing the scanner object
}
public static void main(String[] args) throws Exception {
List<Integer> integers = Arrays.asList(1, 3, 5, 9, 17);
Map<String, Integer> differenceMap = new HashMap<>();
for (int i = 0; i < integers.size(); i++) {
int first = integers.get(i);
for (int j = i + 1; j < integers.size(); j++) {
int second = integers.get(j);
int difference = second - first;
int next = difference + second;
if (integers.contains(next)) {
differenceMap.put(first + " - " + second + " - " + next, difference);
}
}
}
differenceMap.keySet().forEach(System.out::println);
}