1738. 找出第 K 大的异或坐标值

题目链接

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

题目描述

给你一个二维矩阵 matrix 和一个整数 k ,矩阵大小为 m x n 由非负整数组成。

矩阵中坐标 (a, b) 的 值 可由对所有满足 0 <= i <= a < m 且 0 <= j <= b < n 的元素 matrix[i][j](下标从 0 开始计数)执行异或运算得到。

请你找出 matrix 的所有坐标中第 k 大的值(k 的值从 1 开始计数)。

示例 1:

  1. 输入:matrix = [[5,2],[1,6]], k = 1
  2. 输出:7
  3. 解释:坐标 (0,1) 的值是 5 XOR 2 = 7 ,为最大的值。

示例 2:

  1. 输入:matrix = [[5,2],[1,6]], k = 2
  2. 输出:5
  3. 解释:坐标 (0,0) 的值是 5 = 5 ,为第 2 大的值。

示例 3:

  1. 输入:matrix = [[5,2],[1,6]], k = 3
  2. 输出:4
  3. 解释:坐标 (1,0) 的值是 5 XOR 1 = 4 ,为第 3 大的值。

示例 4:

  1. 输入:matrix = [[5,2],[1,6]], k = 4
  2. 输出:0
  3. 解释:坐标 (1,1) 的值是 5 XOR 2 XOR 1 XOR 6 = 0 ,为第 4 大的值。

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <= 1000
  • 0 <= matrix[i][j] <= 106
  • 1 <= k <= m * n

题目分析

  1. 根据题目描述,定义(i,j)的值是前j列中前i个数字的异或,选取第k大的值
  2. 使用动态规划的思想,假设f(x,y)=f(x-1,y-1)XORf(x-1,y)XORf(x,y-1)XORmatrix[i][j]
  3. 边界条件:

    当x=0,y=0时,f(x,y)=matrix[0][0]

    当x=0时,f(x,y)=f(x,y-1)XORmatrix[x][y]

    当y=0时,f(x,y)=f(x-1,y)XORmatrix[x][y]

代码

  1. class Solution {
  2. public:
  3. int kthLargestValue(vector<vector<int>>& matrix, int k) {
  4. int m = matrix.size();
  5. int n = matrix[0].size();
  6. vector<vector<int>> dp(m, vector<int>(n, 0));
  7. vector<int> num;
  8. dp[0][0] = matrix[0][0];
  9. num.push_back(dp[0][0]);
  10. for (int j = 1; j < n; ++j) {
  11. dp[0][j] = dp[0][j - 1] ^ matrix[0][j];
  12. num.push_back(dp[0][j]);
  13. }
  14. for (int i = 1; i < m; ++i) {
  15. dp[i][0] = dp[i - 1][0] ^ matrix[i][0];
  16. num.push_back(dp[i][0]);
  17. }
  18. for (int i = 1; i < m; ++i) {
  19. for (int j = 1; j < n; ++j) {
  20. dp[i][j] = dp[i - 1][j - 1] ^ dp[i - 1][j] ^ dp[i][j - 1] ^ matrix[i][j];
  21. num.push_back(dp[i][j]);
  22. }
  23. }
  24. sort(num.begin(), num.end(), compare);
  25. return num[k - 1];
  26. }
  27. private:
  28. static bool compare(int a, int b) { return a > b; }
  29. };

刷题-力扣-1738. 找出第 K 大的异或坐标值的更多相关文章

  1. 1738. 找出第 K 大的异或坐标值

    2021-05-19 LeetCode每日一题 链接:https://leetcode-cn.com/problems/find-kth-largest-xor-coordinate-value/ 标 ...

  2. OpenJudge计算概论-找出第k大的数

    /*================================================ 找出第k大的数 总时间限制: 1000ms 内存限制: 1000kB 描述 用户输入N和K,然后接 ...

  3. 刷题-力扣-113. 路径总和 II

    113. 路径总和 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/path-sum-ii 著作权归领扣网络所有.商业转载请联系 ...

  4. 刷题-力扣-剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/lian-xu-zi-shu-zu-de ...

  5. 刷题-力扣-264. 丑数 II

    264. 丑数 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/ugly-number-ii/ 著作权归领扣网络所有.商业转载请 ...

  6. 刷题-力扣-剑指 Offer II 055. 二叉搜索树迭代器

    剑指 Offer II 055. 二叉搜索树迭代器 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/kTOapQ 著作权归领扣网络所有 ...

  7. 刷题-力扣-518. 零钱兑换 II

    518. 零钱兑换 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/coin-change-2/ 著作权归领扣网络所有.商业转载 ...

  8. 刷题-力扣-122. 买卖股票的最佳时机 II

    122. 买卖股票的最佳时机 II 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/best-time-to-buy-and-sell ...

  9. 刷题-力扣-1011. 在 D 天内送达包裹的能力

    1011. 在 D 天内送达包裹的能力 题目链接 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/capacity-to-ship-packag ...

随机推荐

  1. 【字符串+排序】宇宙总统 luogu-1781

    题目描述 地球历公元6036年,全宇宙准备竞选一个最贤能的人当总统,共有n个非凡拔尖的人竞选总统,现在票数已经统计完毕,请你算出谁能够当上总统. 分析 给字符串排个序. AC代码 #include & ...

  2. 自建CA实现HTTPS

    说明:这里是Linux服务综合搭建文章的一部分,本文可以作为自建CA搭建https网站的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件 ...

  3. 【系统学习ES6】第一节:新的声明方式

    [系统学习ES6] 本专题旨在对ES6的常用技术点进行系统性梳理,帮助大家对其有更好的掌握.计划每周更新1-2篇,希望大家有所收获. 以前用ES5时,声明变量只能用var.ES6的出现,为我们带来了两 ...

  4. 插入排序(insertion_sort)——Python实现

      # 插入排序 # 作用:对给出的n个顺序不定的数进行排序 # 输入:任意数组A # 输出:按顺序排列的数组A # 时间复杂度 n(n-1) 至 (n(n-1))/2   # 插入排序过程 # 第一 ...

  5. 终于彻底搞清楚了spin-lock 之一次CPU问题定位过程总结

    首先这个问题,我只是其中参与者之一.但这个问题很有参考意义,特记录下来. 还有我第一次用"彻底"这个词,不知道会不会有人喷?其实,还有一些问题,也不是特别清楚.比如说什么是CPU流 ...

  6. 记录21.08.04 — mybatis入门学习

    mybatis入门 mybatis简介 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工 ...

  7. http笔记随笔

    1.HTTP (HyperText Transfer Protocol)超文本传输协议(80端口) 1.规定浏览器和服务器之间相互通信的规则 2.万维网交换信息的基础 3.允许将HTML文档从Web服 ...

  8. Windows影子用户创建与3389连接

    #当获得一条shell后,可以创建一个影子用户,通过影子用户可以行驶正常用户的所有权限与功能,并且只可在注册表中被检测出来---(应急响应注册表很重要) 1.首先需要拥有权限创建一个Administr ...

  9. Kotlin强化实战!这份学习手册让你的面试稳如泰山

    一.引言 正如官网的slogan所描述:kotlin,是一门让程序员写代码时更有幸福的现代语言. 同时,也正如维基百科里介绍: JetBrains公司希望Kotlin能够推动IntelliJ IDEA ...

  10. Typora加七牛云实现实时图片自动上传

    Typora加七牛云实现实时图片自动上传 前言: ​ Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别.重点是免费! ​ 其风格简约 ...