摘要:
给你一个整数数组 nums 和一个正整数 k 。你可以选择数组的任一子序列并且对其全部元素求和。 数组的第 k 大和 定义为:可以获得的第 k 个 最大 子序列和(子序列和允许出现重复) 返回数组的第 k 大和 ###1. 转化问题 + 大根堆 ``` class Solution { public 阅读全文
摘要:
给你两个 从小到大排好序 且下标从 0 开始的整数数组 nums1 和 nums2 以及一个整数 k 请你返回第 k (从 1 开始编号)小的 nums1[i] * nums2[j] 的乘积 ###1. 二分查找 ``` class Solution { public: typedef long l 阅读全文
摘要:
数对 (a,b) 由整数 a 和 b 组成,其数对距离定义为 a 和 b 的绝对差值。 给你一个整数数组 nums 和一个整数 k ,数对由 nums[i] 和 nums[j] 组成且满足 0 & nums, int k) { int n = nums.size(); sort(nums.begin 阅读全文
摘要:
给你一个 m * n 的矩阵 mat,以及一个整数 k ,矩阵中的每一行都以非递减的顺序排列 你可以从每一行中选出1个元素形成一个数组,返回所有可能数组中的第k个最小数组和 ###1. 暴力 逐行遍历 贪心记录加上当前行的值后,前k个最小数组和 ``` class Solution { public 阅读全文
摘要:
###1. [滑动谜题](https://www.cnblogs.com/929code/p/17436699.html) ###2. [转化为全零矩阵的最少反转次数](https://www.cnblogs.com/929code/p/17436196.html) ###3. [推箱子](http 阅读全文
摘要:
在一个 2 x 3 的板上(board)有 5 块砖瓦,用数字 1~5 来表示, 以及一块空缺用 0 来表示。一次 移动 定义为选择 0 与一个相邻的数字(上下左右)进行交换 最终当板 board 的结果是 [[1,2,3],[4,5,0]] 谜板被解开 ###1. 广度优先搜索 ``` class 阅读全文
摘要:
类包括根据顶点数和边初始化的构造函数,添加边,求两点最短路径等函数 ###1. 迪杰斯特拉算法(邻接矩阵) ``` class Graph { private: vector> graph; public: Graph(int n, vector>& edges) { graph.resize(n, 阅读全文
摘要:
二进制矩阵,可以选择任意位置进行反转,其周围格子也会跟着反转 求使得矩阵全为0的最少反转次数 ###1. 广度优先搜索 将每个状态转化为字符串进行存储,方便剪枝和压缩 ``` class Solution { public: int m; int n; vector> dir = {{0,0},{1 阅读全文
摘要:
给一系列顶点,计算这些点能组成矩形的最小面积 ###1. 最小面积矩形(列举对角线+哈希) **矩形的边平行于x轴和y轴** 通过双重循环列举对角线顶点,计算满足条件的矩形面积 ``` class Solution { public: int minAreaRect(vector>& points) 阅读全文
摘要:
###一. 基础进阶 ####1. const作用 ``` //定义常量,相比define的字符替换,具有类型安全检测功能,从汇编角度提供的是地址而不是立即数 const int a = 100; //在函数中防止修改,提高程序健壮性 void f(const int i){ i++; }// er 阅读全文