交换数组中的第n大和第m大数

需要注意复制数组

使用Arrays.copyOf方法
int[] b = Arrays.copyOf(a, a.length);
也可以使用for循环

double[] copyArr = new double[arr.length];
for (int i = 0; i < arr.length; i++) {
    copyArr[i] = arr[i];
}

题解

import java.util.*;

// 交换数组中部的第n大和第m大数

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) {
        int[] b = Arrays.copyOf(a, a.length);
        Arrays.sort(b);
        int temp1 = 0, temp2 = 0;
        for (int i = 0; i < a.length; i++) {
            if (a[i] == b[a.length - n])
                temp1 = i;
        }
        for (int i = 0; i < a.length; i++) {
            if (a[i] == b[a.length - m])
                temp2 = i;
        }

        swap(a, temp1, temp2);

        return a;
    }

    private void swap(int arr[], int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

猜你喜欢

转载自blog.csdn.net/wankcn/article/details/107736582
今日推荐