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 {};
    }
};
相关推荐
Demons_kirit3 分钟前
Leetcode 2845 题解
算法·leetcode·职场和发展
adam_life33 分钟前
http://noi.openjudge.cn/——2.5基本算法之搜索——200:Solitaire
算法·宽搜·布局唯一码
我想进大厂1 小时前
图论---朴素Prim(稠密图)
数据结构·c++·算法·图论
我想进大厂1 小时前
图论---Bellman-Ford算法
数据结构·c++·算法·图论
AIGC大时代1 小时前
高效使用DeepSeek对“情境+ 对象 +问题“型课题进行开题!
数据库·人工智能·算法·aigc·智能写作·deepseek
CODE_RabbitV2 小时前
【深度强化学习 DRL 快速实践】近端策略优化 (PPO)
算法
lwewan2 小时前
26考研——存储系统(3)
c语言·笔记·考研
Wendy_robot3 小时前
【滑动窗口+哈希表/数组记录】Leetcode 438. 找到字符串中所有字母异位词
c++·算法·leetcode
程序员-King.3 小时前
day49—双指针+贪心—验证回文串(LeetCode-680)
算法·leetcode·贪心算法·双指针
转基因3 小时前
Codeforces Round 1020 (Div. 3)(题解ABCDEF)
数据结构·c++·算法