苏州专业网站设计制作公司,帝国做的网站打开速度,wordpress无法打开备份,浙江省城乡住房建设网站题目分析 一个n个身高数据#xff0c;问最高的到最前面#xff0c;最矮的到最后面的最短交换次数
思路分析 首先#xff0c;如果数据有重复项#xff0c;例如示例二中#xff0c;最矮的数据就是最后一个出现的数据位置#xff0c;最高的数据就是最先出现的数据位置…
题目分析 一个n个身高数据问最高的到最前面最矮的到最后面的最短交换次数
思路分析 首先如果数据有重复项例如示例二中最矮的数据就是最后一个出现的数据位置最高的数据就是最先出现的数据位置其次最高和最矮的位置关系如果最高的在左边最矮的在右边例如示例一就互不干扰直接计算距离。如果二者交换那么当某一方先往另一方移动时就会产生一次交换帮助另一方移动一次
代码 import java.util.*;public class Main {public static void main(String[] args) {Scanner sc new Scanner(System.in);int n sc.nextInt();//数据样本sc.nextLine();int min100;//设计一个最小值再初始化一个比较大的值此处设置不严谨但是刚好够用int max-1;//设计一个最大值在初始化一个比较小的值由于此处都是正数所以可以初始化负数int[] brrnew int[2];//作为存储最大值和最小值位置的数组也可以直接用两个单独的int变量for (int i 0; i n; i) {//遍历存值int tempsc.nextInt();//存值if (tempmin){//如果更小有可能有其他同样最小值所以这里用同步更新位置信息mintemp;//更新最小值brr[0]i;//存入最小位置信息}if (tempmax){//如果更大由于这里只找最先出现的最大值所以不用maxtemp;//更新最大值brr[1]i;//存入最大位置信息}}int re0;//初始化答案if (brr[0]brr[1]){//如果最小值在最大值右边即互不干扰rebrr[1]n-(brr[0]1);//直接赋值左右两边的临界距离} else if (brr[0]brr[1]) {//如果交叉干扰ren-1-brr[0]brr[1]-1;//两个值临界距离-1}System.out.println(re);}
} 感谢您能够看到这里一起见证小何同学的算法学习如果您有不同的见解希望能得到您的指点和点悟如果您是和我一样的同学也希望这篇文章能对您有所帮助。