拼车(1094)

news/2025/1/31 9:44:03 标签: 算法, leetcode, 数据结构

1094. 拼车 - 力扣(LeetCode)

解法:

class Solution {
public:
    bool carPooling(vector<vector<int>>& trips, int capacity) 
    {
        uint32_t passenger_cnt = 0;
        //将原数据按照from排序
        auto func_0 = [](vector<int> & i1, vector<int> & i2) {
            return i1[1] < i2[1];
        };
        sort(trips.begin(), trips.end(), func_0);

        //入队列的数据按照to排序
        auto func_1 = [](pair<int, int> & i1, pair<int, int> & i2) {
            return i1.second > i2.second;
        };
        vector<pair<int, int>> v;
        //给优先队列预先分配内存
        v.reserve(trips.size());
        //priority_queue 只需要记录 count 和 离开的时间
        priority_queue<pair<int, int> , vector<pair<int, int>>, decltype(func_1)> q( func_1, v);
        
        for (int i = 0; i < trips.size(); ++i) {
            //如果队列的top()数据小于trips[i][1],说明在trips[i][1]上车前top()已经下车
            while (!q.empty() && (q.top().second <= trips[i][1])){
                passenger_cnt -= q.top().first;
                q.pop();
            }

            passenger_cnt += trips[i][0];
            if (passenger_cnt >  capacity) {
                return false;
            }
            q.emplace(trips[i][0], trips[i][2]);
        }

        return true;
    }
};

总结:

时间复杂度O(NlogN),空间复杂度O(N),算法细节如代码注释


http://www.niftyadmin.cn/n/5838566.html

相关文章

mysql重学(一)mysql语句执行流程

思考 一条查询语句如何执行&#xff1f;mysql语句中若列不存在&#xff0c;则在哪个阶段报错一条更新语句如何执行&#xff1f;redolog和binlog的区别&#xff1f;为什么要引入WAL什么是Changbuf&#xff1f;如何工作写缓冲一定好吗&#xff1f;什么情况会引发刷脏页删除语句会…

2021版小程序开发4——基础加强

2021版小程序开发4——基础加强 学习笔记 2025 自定义组件组件中behaviors的作用安装和使用vant-weapp组件库使用MobX实现全局数据共享对小程序的API进行Promise化 具体的内容还包括&#xff1a;使用npm包、全局数据共享、分包和自定义tabBar的案例&#xff1b; 1 自定义组件 …

Web-3.0学习路线

方向学习内容✅ 区块链基础区块链、智能合约、共识机制✅ 智能合约Solidity / Rust&#xff08;Ethereum / Solana&#xff09;✅ 前端React.js, Next.js, Web3.js, ethers.js✅ 后端Node.js, Python, Golang&#xff08;链上数据&#xff09;✅ 存储IPFS, Arweave, Filecoin&a…

Leetcode 131 分割回文串(纯DFS)

131. 分割回文串https://leetcode.cn/problems/palindrome-partitioning/https://leetcode.cn/problems/palindrome-partitioning/ 给你一个字符串 s&#xff0c;请你将 s 分割成一些子串&#xff0c;使每个子串都是 回文串 。返回 s 所有可能的分割方案。 示例 1&#xff1a…

[Java]泛型(二)泛型方法

1.定义 在 Java 中&#xff0c;泛型方法是指在方法声明中使用泛型类型参数的一种方法。它使得方法能够处理不同类型的对象&#xff0c;而不需要为每种类型写多个方法&#xff0c;从而提高代码的重用性。 泛型方法与泛型类不同&#xff0c;泛型方法的类型参数仅仅存在于方法的…

PYH与MAC的桥梁MII/MIIM

在学习车载互联网时&#xff0c;看到了一句话&#xff0c;Processor通过DMA直接存储访问与MAC之间进行数据的交互&#xff0c;MAC通过MII介质无关接口与PHY之间进行数据的交互。常见的以太网硬件结构是&#xff0c;将MAC集成进Processor芯片&#xff0c;将PHY留在Processor片外…

如何解除TikTok地区限制:实用方法解析

随着社交媒体的不断发展&#xff0c;TikTok作为一款短视频平台&#xff0c;已经在全球范围内吸引了数以亿计的用户。然而&#xff0c;不同地区对TikTok的使用权限存在一定的限制&#xff0c;这使得一些用户无法享受平台提供的完整内容和功能。 一、了解TikTok地区限制的原因 在…

智能家居监控系统数据收集积压优化

亮点&#xff1a;RocketMQ 消息大量积压问题的解决 假设我们正在开发一个智能家居监控系统。该系统从数百万个智能设备&#xff08;如温度传感器、安全摄像头、烟雾探测器等&#xff09;收集数据&#xff0c;并通过 RocketMQ 将这些数据传输到后端进行处理和分析。 在某些情况下…