免费ai写作网站3000字,移动互联网开发选题,做网站还是做app好,广告推销网站1738. 找出第 K 大的异或坐标值
给你一个二维矩阵 matrix 和一个整数 k #xff0c;矩阵大小为 m x n 由非负整数组成。
矩阵中坐标 (a, b) 的 值 可由对所有满足 0 i a m 且 0 j b n 的元素 matrix[i][j]#xff08;下标从 0 开始计数…1738. 找出第 K 大的异或坐标值
给你一个二维矩阵 matrix 和一个整数 k 矩阵大小为 m x n 由非负整数组成。
矩阵中坐标 (a, b) 的 值 可由对所有满足 0 i a m 且 0 j b n 的元素 matrix[i][j]下标从 0 开始计数执行异或运算得到。
请你找出 matrix 的所有坐标中第 k 大的值k 的值从 1 开始计数。 示例 1
输入matrix [[5,2],[1,6]], k 1
输出7
解释坐标 (0,1) 的值是 5 XOR 2 7 为最大的值。
示例 2
输入matrix [[5,2],[1,6]], k 2
输出5
解释坐标 (0,0) 的值是 5 5 为第 2 大的值。
示例 3
输入matrix [[5,2],[1,6]], k 3
输出4
解释坐标 (1,0) 的值是 5 XOR 1 4 为第 3 大的值。
示例 4
输入matrix [[5,2],[1,6]], k 4
输出0
解释坐标 (1,1) 的值是 5 XOR 2 XOR 1 XOR 6 0 为第 4 大的值。 提示
m matrix.lengthn matrix[i].length1 m, n 10000 matrix[i][j] 1061 k m * n class Solution {public int kthLargestValue(int[][] matrix, int k) {// QueueInteger que new PriorityQueue();ListInteger ans new ArrayList();int[][] dp new int[matrix.length][matrix[0].length];//dp数组含义为当前位置的异或值dp[0][0] matrix[0][0];for(int i 0;i matrix.length;i){for(int j 0;j matrix[0].length;j){dp[i][j] matrix[i][j];//当前位置值if(i!0)dp[i][j] ^ dp[i-1][j];//如果不处于上边界则需要异或上方的值if(j!0)dp[i][j] ^ dp[i][j-1];//如果不处于左边界则需要异或左方的值if(i!0j!0)dp[i][j] ^ dp[i-1][j-1];//当都不处于时要异或左上方值来抵消之前多异或的一次ans.add(dp[i][j]);}}Collections.sort(ans);//排序来找第K大return ans.get(ans.size()-k);//// while(que.size()k){//优先队列找第K大// que.poll();// }// return que.poll();}
}