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 {};
    }
};
相关推荐
利刃大大1 小时前
【回溯+剪枝】找出所有子集的异或总和再求和 && 全排列Ⅱ
c++·算法·深度优先·剪枝
Rachela_z2 小时前
代码随想录算法训练营第十四天| 二叉树2
数据结构·算法
细嗅蔷薇@2 小时前
迪杰斯特拉(Dijkstra)算法
数据结构·算法
追求源于热爱!2 小时前
记5(一元逻辑回归+线性分类器+多元逻辑回归
算法·机器学习·逻辑回归
ElseWhereR2 小时前
C++ 写一个简单的加减法计算器
开发语言·c++·算法
Smark.2 小时前
Gurobi基础语法之 addConstr, addConstrs, addQConstr, addMQConstr
算法
S-X-S3 小时前
算法总结-数组/字符串
java·数据结构·算法
Joyner20183 小时前
python-leetcode-从中序与后序遍历序列构造二叉树
算法·leetcode·职场和发展
因兹菜3 小时前
[LeetCode]day9 203.移除链表元素
算法·leetcode·链表
LNsupermali3 小时前
力扣257. 二叉树的所有路径(遍历思想解决)
算法·leetcode·职场和发展