LeetCode210513矩阵的转置和公平的糖果棒交换

Posted 程序彤

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode210513矩阵的转置和公平的糖果棒交换相关的知识,希望对你有一定的参考价值。

矩阵的转置

思路:
2*3的不是方阵矩阵的存在,使得必须额外声明一个二维数组newArr[ n ][ m ],原二维数组为arr[ m ][ n ],只需让而额外的二维数组
的第[ i ] [ j ]上的元素赋值给新的额外的二维数组的第[ j ][ i ]位置上。

	public static int[][] method(int[][] arr){
        int m = arr.length;
        int n = arr[0].length;
        int[][] newArr = new int[n][m];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                newArr[j][i] = arr[i][j];
            }
        }
        return newArr;
    }

公平的糖果棒交换

思路:
题意是交换后,两人拥有相同的糖果总量sumA=sumB,在开始时使用Arrays数组对A和B两数组分别求和。sumA=sumB,sumA-x+y=sumB+x-y,化简后x=y-(sumA-sumB)/2。故将A数组中的数存放到set集合中,额外声明一个长度为2的新数组,遍历B数组中的元素,如果b数组中的元素+exp后的值包括于set集合中,故将数组第一数为b+exp,第二个数为b

	public static int[] method(int[] A,int[] B){
        int sumA = Arrays.stream(A).sum();
        int sumB = Arrays.stream(B).sum();
        int exp = (sumA-sumB)/2;

        HashSet<Integer> hashSet = new HashSet<>();
        for (int a : A) {
            hashSet.add(a);
        }
        int[] ints = new int[2];
        for (int b : B) {
            int x = b+exp;
            if (hashSet.contains(x)) {
                ints[0] = x;
                ints[1] = b;
                break;
            }
        }
        return ints;
    }

以上是关于LeetCode210513矩阵的转置和公平的糖果棒交换的主要内容,如果未能解决你的问题,请参考以下文章

三元组顺序表表示的稀疏矩阵的转置和加法运算的实现

三元组顺序表表示的稀疏矩阵的转置和加法运算的实现----《数据结构》

matlab中转置与共轭转置的问题

LeetCode 867. 转置矩阵

LeetCode刷题(123)~转置矩阵

《LeetCode之每日一题》:72.转置矩阵