有一个没有重复元素的数组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;
}
}