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