解题思路:

没什么思路,保存最小值和最大值坐标,调换就可以,很简单的一道题

注意事项:
问题在这里:

如果最小值是最后一个坐标,最大值是第一个坐标,那么会相同的坐标交换两次,也就是没有交换,所以这里可以判段一下,只交换一次

如果最大值在第0个坐标,最小值在第i个坐标,如果先将最小值和第一个交换,那么最大值的坐标就会改变了,这里就需要先将最大值换到最后,最小值在移到前面来,考虑好相关坐标的变化,比如最小值在最后一个坐标,最大值在前面的坐标,先交换最大值,最小值的坐标上的值又变动了。考虑好这三种情况即可

参考代码:

import java.io.*;

import java.util.Arrays;


public class Main{

static BufferedReader bf=new BufferedReader(new InputStreamReader(System.in));

static PrintWriter pw=new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));

public static void main(String[] args) throws IOException  {

String[] arr=bf.readLine().split(" ");

int[] real=toIntarr(arr);

int min=real[0];

int max=real[real.length-1];

int minIndex=0;

int maxIndex=real.length-1;

for(int i=0;i<real.length;i++) {

if(real[i]>max) {

max=real[i];

maxIndex=i;

}

if(real[i]<min) {

min=real[i];

minIndex=i;

}

}

if(minIndex==real.length-1&&maxIndex==0) {

swap(real,maxIndex,minIndex);

}else {

swap(real,maxIndex,real.length-1);

swap(real,0,minIndex);

}

print(real);

}

public static void print(int[] arr) {

for(int i:arr) {

System.out.print(i+" ");

}

}

public static int[] toIntarr(String[] arr) {

int[] intArr=new int[arr.length];

for(int i=0;i<arr.length;i++) {

intArr[i]=Integer.parseInt(arr[i]);

}

return intArr;

}

public static void swap(int[] arr,int i,int j) {

int temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}


点赞(0)
 

0.0分

1 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论