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矩阵的转置和公平的糖果棒交换的主要内容,如果未能解决你的问题,请参考以下文章