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 {};
    }
};
相关推荐
孤飞3 小时前
zero2Agent:面向大厂面试的 Agent 工程教程,从概念到生产的完整学习路线
算法
技术专家4 小时前
Stable Diffusion系列的详细讨论 / Detailed Discussion of the Stable Diffusion Series
人工智能·python·算法·推荐算法·1024程序员节
csdn_aspnet5 小时前
C# (QuickSort using Random Pivoting)使用随机枢轴的快速排序
数据结构·算法·c#·排序算法
鹿角片ljp5 小时前
最长回文子串(LeetCode 5)详解
算法·leetcode·职场和发展
paeamecium6 小时前
【PAT甲级真题】- Cars on Campus (30)
数据结构·c++·算法·pat考试·pat
chh5637 小时前
C++--模版初阶
c语言·开发语言·c++·学习·算法
RTC老炮8 小时前
带宽估计算法(gcc++)架构设计及优化
网络·算法·webrtc
dsyyyyy11018 小时前
计数孤岛(DFS和BFS解决)
算法·深度优先·宽度优先
会编程的土豆8 小时前
01背包与完全背包详解
开发语言·数据结构·c++·算法
汀、人工智能9 小时前
[特殊字符] 第86课:最大正方形
数据结构·算法·数据库架构·图论·bfs·最大正方形