首页 > 试题广场 >

数组元素交换

[编程题]数组元素交换
  • 热度指数:915 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
有一个没有重复元素的数组a,想要将数组内第n大的数字和第m大的数(从大到小排序)交换位置。给定一个数组a,求交换第n大和第m大元素后的数组。

示例1

输入

[1,2],1,2

输出

[2,1]

备注:
理解题目的意思比做题都难。
发表于 2022-07-23 22:34:09 回复(0)
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;
    }
}

发表于 2021-07-09 15:12:56 回复(0)
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;
    }

发表于 2021-03-10 13:25:30 回复(0)

/**
 * 1.如果传入的第几个数大于数组的长度直接返回
 * 2.拷贝一个新的数组后进行排序
 * 3.分别找出第几大数字和其下标
 * 4.进行简单的交换
 */
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
}


发表于 2020-09-04 17:44:53 回复(0)

问题信息

难度:
4条回答 1548浏览

热门推荐

通过挑战的用户

查看代码