有一个没有重复元素的数组a,想要将数组内第n大的数字和第m大的数(从大到小排序)交换位置。给定一个数组a,求交换第n大和第m大元素后的数组。
import java.util.*; public class Solution { /** * * @param a int整型一维数组 原始数组a * @param n int整型 第n大 * @param m int整型 第m大 * @return int整型一维数组 */ public int[] sovle (int[] a, int n, int m) { // write code here int re[] = new int[1001]; int len = a.length; for(int i=0;i<len;i++) re[a[i]] = i+1; int idx1 = -1,idx2=-1; int count = 0; for(int i=1000;i>=0;i--){ if(re[i]!=0) count ++; if(idx1==-1&&count==n) idx1 = re[i]-1; if(idx2==-1&&count==m) idx2 = re[i]-1; if(idx1!=-1&&idx2!=-1) break; } int tmp = a[idx2]; a[idx2] = a[idx1]; a[idx1] = tmp; return a; } }