首页 > 试题广场 >

数组元素交换

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

示例1

输入

[1,2],1,2

输出

[2,1]

备注:
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)

问题信息

难度:
1条回答 1559浏览

热门推荐

通过挑战的用户

查看代码