今天碰到一道面试题编写程序:输入一个数组,最大值和第一个交换,最小值和最后一个交换,最后输出数组。谁能帮忙写下主算法。
------解决方案--------------------
写的不好,只是参考
- Java code
public class Test { public static int[] change(int[] a){ int max = a[0]; int min = a[0]; for(int i=1;i<a.length;i++){ if(a[i]>max){ max = a[i]; } if(a[i]<min){ min = a[i]; } } a[0] = max; a[a.length - 1]= min; return a; } public static void main(String args[]){ int[] b = {3,2,1,5,4}; int[] c = change(b); for(int j=0;j<c.length;j++){ System.out.print(c[j]); } }}
------解决方案--------------------
感觉就是一楼实现的样子
------解决方案--------------------
一楼果断没有实现交换。我来改改。
- Java code
public class Test1 { public static int[] change(int[] a){ int max = 0; int min = 0; int temp; for(int i=1;i<a.length;i++){ if(a[i]>a[max]){ max = i; } if(a[i]<a[min]){ min = i; } } temp=a[0]; a[0] = a[max]; a[max] = temp; temp=a[a.length - 1]; a[a.length - 1]= a[min]; a[min]=temp; return a; } public static void main(String args[]){ int[] b = {3,2,1,5,4}; int[] c = change(b); for(int j=0;j<c.length;j++){ System.out.print(c[j]); } }}
------解决方案--------------------
------解决方案--------------------
你先把最大最小的找出来 貌似这个很好找吧 然后就是个替换
------解决方案--------------------
三楼的有点问题,改成下面的即可
- Java code
for(int i=1;i<a.length;i++){ if(a[i]>=a[max]){ max = i; } if(a[i]<=a[min]){ min = i; } }
------解决方案--------------------
java的话,用集合框架非常简单
------解决方案--------------------
做过这个题目....3L就是答案,不过要考虑下最小值是否为第一位...
------解决方案--------------------
------解决方案--------------------