习题内容:
小朋友根据身高找到最近的比自己高的小朋友,那么这个小朋友就是前者的好朋友,输出其位置编号。
比如:从0号小朋友身高100,往后找到了第一个比自己高的小朋友身高为101,该101身高的小朋友位置时5,那么就输出0号小朋友的好朋友是5。
输入:
//第一行输入小朋友数目。
//第二行依次输入小朋友身高
2
100 102
输出:
//1代表0号找到了好朋友,位置为1,后面的0代表1位置的小朋友没有找到好朋友。
1 0
直接上代码:
package test;
import java.util.Scanner;
public class 求最近好朋友 {
public static int[] getBestFirend(int[] nums){
if (nums==null ||nums.length <= 0){
return null;
}
int numSize = nums.length;
int[] indexs = new int[numSize];
//核心代码,遍历并比较好朋友的身高值,如果比自己搞则将位置给index[i]
for (int i = 0;i < numSize; i++){
for (int j = i+1;j < numSize; j++){
if (nums[i]<nums[j]){
indexs[i] = j;
//如果找到了好朋友,则直接跳到循环结束
j=numSize;
}
}
}
return indexs;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int size = sc.nextInt();
int[] nums = new int[size];
for (int i = 0;i<size;i++){
nums[i] = sc.nextInt();
}
int[] indexs = getBestFirend(nums);
for (int is:indexs) {
System.out.print(is + " ");
}
}
}
输出结果:
2
100 102
1 0
Process finished with exit code 0