408算法题leetcode--第24天

#378. 有序矩阵中第 K 小的元素

cpp 复制代码
class Solution {
public:
    int check(vector<vector<int>>& matrix, int target){
        // 找<=target的个数
        int count = 0;
        int n = matrix.size();
        // 每一列最后一个<=target的数
        int i = n - 1, j = 0;
        while(i >= 0 && j < n){
            if(matrix[i][j] <= target){
                // 第j列有i+1个元素<=target
                count += i + 1;
                ++j;
            } else {
                --i;
            }
        }
        return count;
    }
    int kthSmallest(vector<vector<int>>& matrix, int k) {
        // 思路1:二维 > 一维,排序,输出第k个数
        // 优化:值二分,计算l与mid之间的元素个数,如果<k,说明target在右段,否则在左段
        // 每个数的范围都在[matrix[0][0], matrix[n-1][n-1]]之间,找到第一个满足左段有k-1个数的值
        int n = matrix.size();
        int l = matrix[0][0], r = matrix[n - 1][n - 1];
        while(l < r){
            int mid = l + (r - l) / 2;
            if(check(matrix, mid) < k){  // <=mid的个数<k
                l = mid + 1;
            } else {
                r = mid;
            }
        }
        return l;
    }
};

1. 两数之和

  • 1. 两数之和
  • 思路1:暴力
  • 思路2:哈希表;时间和空间:O(n)
cpp 复制代码
class Solution {
public:
    vector<int> twoSum(vector<int>& nums, int target) {
        unordered_map<int, int>mp;  // val, index
        int size = nums.size();
        for(int i = 0; i < size; i++){
            int complement = target - nums[i];
            if(mp.find(complement) != mp.end()){
                return {mp[complement], i};
            }
            mp[nums[i]] = i;
        }
        return {};
    }
};
相关推荐
爱吃生蚝的于勒10 分钟前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~14 分钟前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
王哈哈^_^39 分钟前
【数据集】【YOLO】【VOC】目标检测数据集,查找数据集,yolo目标检测算法详细实战训练步骤!
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·pyqt
星沁城42 分钟前
240. 搜索二维矩阵 II
java·线性代数·算法·leetcode·矩阵
脉牛杂德1 小时前
多项式加法——C语言
数据结构·c++·算法
legend_jz1 小时前
STL--哈希
c++·算法·哈希算法
kingmax542120081 小时前
初三数学,最优解问题
算法
一直学习永不止步1 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数
小刘|2 小时前
《Java 实现希尔排序:原理剖析与代码详解》
java·算法·排序算法
jjyangyou2 小时前
物联网核心安全系列——物联网安全需求
物联网·算法·安全·嵌入式·产品经理·硬件·产品设计