有一个没有重复元素的数组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;
}
} public int[] sovle (int[] a, int n, int m) {
// write code here
int[] b=new int[a.length];
for(int i=0;i<a.length;i++){
b[i]=a[i];
}
Arrays.sort(a);
int a1=a[a.length-n];
int a2=a[a.length-m];
for(int i=0;i<b.length;i++){
if(b[i] == a1){
b[i] = a2;
continue;
}
if(b[i] == a2){
b[i] =a1;
continue;
}
}
return b;
} function sovle( a , n , m ) {
// write code here
if (m > a.length || n > a.length) {
return;
}
const arr = [...a]
arr.sort((a, b) => b-a)
const nValue = arr[n - 1]
const mValue = arr[m - 1]
const nIndex = a.indexOf(nValue)
const mIndex = a.indexOf(mValue)
var temp;
temp = a[nIndex]
a[nIndex] = a[mIndex]
a[mIndex] = temp
return a
}