【1333. 餐厅过滤器】
来源:力扣(LeetCode)
描述:
给你一个餐馆信息数组 restaurants,其中 restaurants[i] = [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。
其中素食者友好过滤器 veganFriendly 的值可以为 true 或者 false,如果为 true 就意味着你应该只包括 veganFriendlyi 为 true 的餐馆,为 false 则意味着可以包括任何餐馆。此外,我们还有最大价格 maxPrice 和最大距离 maxDistance 两个过滤器,它们分别考虑餐厅的价格因素和距离因素的最大值。
过滤后返回餐馆的 id,按照 rating 从高到低排序。如果 rating 相同,那么按 id 从高到低排序。简单起见, veganFriendlyi 和 veganFriendly 为 true 时取值为 1,为 false 时,取值为 0 。
示例 1:
输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 1, maxPrice = 50, maxDistance = 10
输出:[3,1,5]
解释:
这些餐馆为:
餐馆 1 [id=1, rating=4, veganFriendly=1, price=40, distance=10]
餐馆 2 [id=2, rating=8, veganFriendly=0, price=50, distance=5]
餐馆 3 [id=3, rating=8, veganFriendly=1, price=30, distance=4]
餐馆 4 [id=4, rating=10, veganFriendly=0, price=10, distance=3]
餐馆 5 [id=5, rating=1, veganFriendly=1, price=15, distance=1]
在按照 veganFriendly = 1, maxPrice = 50 和 maxDistance = 10 进行过滤后,我们得到了餐馆 3, 餐馆 1 和 餐馆 5(按评分从高到低排序)。
示例 2:
输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 0, maxPrice = 50, maxDistance = 10
输出:[4,3,2,1,5]
解释:餐馆与示例 1 相同,但在 veganFriendly = 0 的过滤条件下,应该考虑所有餐馆。
示例 3:
输入:restaurants = [[1,4,1,40,10],[2,8,0,50,5],[3,8,1,30,4],[4,10,0,10,3],[5,1,1,15,1]], veganFriendly = 0, maxPrice = 30, maxDistance = 3
输出:[4,5]
提示:
- 1 <= restaurants.length <= 104
- restaurants[i].length == 5
- 1 <= idi, ratingi, pricei, distancei <= 105
- 1 <= maxPrice, maxDistance <= 105
- veganFriendlyi 和 veganFriendly 的值为 0 或 1 。
- 所有 idi 各不相同。
方法:排序
按照题目要求,我们首先获取数组 restaurants 经过三个过滤器后的 filtered 数组。遍历 restaurants,假设当前遍历的元素为 restaurants[i],如果以下条件都满足:
- restaurants[i][3] <= maxPrice
- restaurants[i][4] <= maxDistance
- veganFriendly 为 false 或 restaurants[i][2] 为 true
那么将 restaurants[i] 加入到 filtered 中。然后将 filtered 按照 rating 从高到低排序,如果 rating 相同,则按 id 从高到低排序。最后返回 filtered 的所有 id 作为结果。
代码:
class Solution {
public:vector<int> filterRestaurants(vector<vector<int>>& restaurants, int veganFriendly, int maxPrice, int maxDistance) {int n = restaurants.size();vector<vector<int>> filtered;for (int i = 0; i < n; i++) {if (restaurants[i][3] <= maxPrice && restaurants[i][4] <= maxDistance && !(veganFriendly && !restaurants[i][2])) {filtered.push_back(restaurants[i]);}}sort(filtered.begin(), filtered.end(), [](vector<int> &v1, vector<int> &v2) -> bool {return v1[1] > v2[1] || (v1[1] == v2[1] && v1[0] > v2[0]);});vector<int> res;for (auto &v : filtered) {res.push_back(v[0]);}return res;}
};
时间 72ms 击败 86.81%使用 C++ 的用户
内存 27.50MB 击败 28.57%使用 C++ 的用户
复杂度分析
- 时间复杂度:O(nlogn),其中 n 是数组 restaurants 的长度。排序需要 O(nlogn)。
- 空间复杂度:O(n)。保存 filtered 需要 O(n) 的空间。
author:力扣官方题解
相关文章:
【1333. 餐厅过滤器】
来源:力扣(LeetCode) 描述: 给你一个餐馆信息数组 restaurants,其中 restaurants[i] [idi, ratingi, veganFriendlyi, pricei, distancei]。你必须使用以下三个过滤器来过滤这些餐馆信息。 其中素食者友好过滤器 v…...
wifi7有关的210个提案
[1] TGbe, “Compendium of motions related to the contents of the TGbe specification framework document,” 19/1755r8, September 2020. [2] Bin Tian (Qualcomm), “Discussion on 11be PHY capabilities,” 20/0975r0, July 2020. [3] TGbe, “Compendiu…...
200行C++代码写一个Qt俄罗斯方块小游戏
小小演示一下: 大体思路: 其实很早就想写一个俄罗斯方块了,但是一想到那么多方块还要变形,还要判断落地什么的就脑壳疼。直到现在才写出来。 俄罗斯方块这个小游戏的小难点其实就一个,就是方块的变形,看似…...
蓝桥杯每日一题20223.9.26
4407. 扫雷 - AcWing题库 题目描述 分析 此题目使用map等都会超时,所以我们可以巧妙的使用哈希模拟散列表,哈希表初始化为-1首先将地雷读入哈希表,找到地雷的坐标在哈希表中对应的下标,如果没有则此地雷的位置第一次出现&#…...
查看基站后台信息
查看基站后台信息 电脑配置固定ip: 192.168.1.99: 打开“网络和共享中心”,选择更改适配器设置: 右键“本地连接”,选择属性 基站网线直连电脑网口 Telnet 登录基站 打开dos窗口 windows键R”,输入cmd,点确定&…...
关于坐标的旋转变换和坐标系的旋转变换
不管是坐标的旋转变换还是坐标系下的旋转变换,只和旋转的顺时针和逆时针有关。然坐标系间的顺时针和逆时针是根据当前坐标系在目标坐标系下的相对位置确定。 一。逆时针旋转belta角度的公式 二。顺时针旋转belta角度的公式 三。坐标的旋转变换 1.坐标的旋转变换相…...
2023.9.19 关于 数据链路层 和 DNS 协议 基本知识
目录 数据链路层 MTU DNS 协议 补充 DHCP协议 数据链路层 基本概念: 考虑相邻两个节点之间的传输(通过 网线 / 光纤 / 无线 直接相连的两个设备)以太网协议 规定了 数据链路层 和 物理层 的内容 IP地址 与 mac地址 的相互配合 IP地址 描…...
如何保证接口幂等性
简介 接口幂等性就是说用户使用相同的参数请求同一个接口无论是一次还是多次都应该是一样的。不会因为多次的点击产生不同效果。 举个栗子:一个用户在手机APP上提200块钱,然后一不小心点击了两次,那么就应该只提取出200块钱,不应…...
搭建智能桥梁,Amazon CodeWhisperer助您轻松编程
零:前言 随着时间的推移,人工智能技术以惊人的速度向前发展,正掀起着全新的编程范式革命。不仅仅局限于代码生成,智能编程助手等创新应用也进一步提升了开发效率和代码质量,极大地推动着软件开发领域的快速繁荣。 当前…...
数组和指针笔试题解析之【指针】
目录 🍂笔试题1: 🍂笔试题2: 🍂笔试题3: 🍂笔试题4: 🍂笔试题5: 🍂笔试题6: 🍂笔试题7: 🍂笔试题…...
【Linux】之Centos7卸载KVM虚拟化服务
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
智能电力运维系统:数字化转型在电力行业的关键应用
随着信息技术、人工智能等的飞速发展,数字化改造已成为各行各业的重要发展趋势。在电力行业中,智能电力运维系统是数字化转型的关键应用之一。 力安科技智能电力运维系统是一种集自动化、智能化、云计算、物联网等先进技术于一体的电力运维管理解决方…...
eslint报错:no-empty-source
问题: 提交代码时,eslint校验没有通过,报错 esc[2m183:9esc[22m esc[31mesc[31m✖esc[39m Unexpected empty source esc[2mno-empty-sourceesc[22m 1 problem (esc[31m1 erroresc[39m, esc[33m0 warnings esc[39m) 原因: …...
图论17(Leetcode864.获取所有钥匙的最短路径)
用二进制表示获得的钥匙,假设n钥匙个数 000000000代表没有钥匙,0000000001代表有idx为1的钥匙,0000000011代表有idx1,2的钥匙 (这方法巧妙又复杂.. 代码: class Solution {static int[][] dirs {{-1,0}…...
vue 脚手架 入门 记录
vue 脚手架 入门 记录 以管理员身份运行PowerShell执行:get-ExecutionPolicy,回复Restricted,表示状态是禁止的 3.执行:set-ExecutionPolicy RemoteSigned 4.选择Y 注意:一定要以管理员的身份运行PowerShellÿ…...
汽车租赁系统演示租车小程序H5开发
一款适合汽车租赁业务的程序系统,支持在线支付、一键续租、在线签名。 为了方便用户端方便租车和查看已租车辆的信息和费用,支持上门取车和到店取车两种模式,支持待付款、待取车、待还车、订单管理、已完成、全部订单等订单状态查看和处理功…...
【MySQL】 MySQL 更新数据机制
MySQL 更新数据机制 一、问题描述 假设我们有这样一张表,且包含一条记录: CREATE TABLE mytest ( id int(11) NOT NULL, c1 int(11) DEFAULT NULL, c2 int(11) DEFAULT NULL, c3 int(11) DEFAULT NULL, PRIMARY KEY (id), KEY c1 (c1), KEY c2 (c2) 包…...
批次管理在MES管理系统中有哪些应用
在制造企业中,批次管理是一项至关重要的管理方法,它贯穿于企业的整个生产过程中。特别是在流程制造行业中,如药品、食品等行业,批次管理显得尤为重要。这些行业的产品通常需要进行严格的质量控制和追踪,以便在问题发生…...
python命名规范
一、概述 以前写python代码没有个代码,写出的代码一点也不规范 二、命名规范 2.1类的命名规范 总是使用首字母大写单词串。如MyClass、ClassName。内部类可以使用额外的前导下划线。 2.2函数和方法的命名规范 小写下划线,如method_name。 2.3函数…...
Redis学习笔记--002
Redis的JAVA客户端 文章目录 Redis的JAVA客户端一、Redis的Java客户端的种类二、Jedis2.1、使用步骤2.2、Jedis连接池 三、[SpringDataRedis](https://spring.io/projects/spring-data-redis)3.1、介绍3.2、RedisTemplate3.3、SpringDataRedis使用步骤3.4、SpringDataRedis的序…...
说说你对spring的IOC的理解
面试 IOC指的就是控制反转,指的就是创建对象的控制权的转移,简单来说,由之前的手动new对象,转换成了由spring自动生产,spring利用java的反射机制,根据配置文件或注解在运行时动态创建并管理对象。...
基于Arduino与Mixly的心知天气实时监测系统开发指南
1. 项目概述与准备 最近在工作室捣鼓了一个特别实用的小项目——用Arduino和Mixly搭建的天气监测系统。这个系统能实时获取温度、湿度、空气质量等数据,特别适合放在阳台或者窗台。我最初做这个是因为家里老人总抱怨手机天气App看不懂,现在有了这个实体设…...
UCF-SST-CitySim数据集:面向智能交通研究的高精度轨迹数据解决方案
UCF-SST-CitySim数据集:面向智能交通研究的高精度轨迹数据解决方案 【免费下载链接】UCF-SST-CitySim1-Dataset 项目地址: https://gitcode.com/gh_mirrors/ucf/UCF-SST-CitySim-Dataset 如何解决复杂道路场景的数据缺失问题?——CitySim的价值定…...
w3x2lni:魔兽地图跨版本转换的技术架构与实战指南
w3x2lni:魔兽地图跨版本转换的技术架构与实战指南 【免费下载链接】w3x2lni 魔兽地图格式转换工具 项目地址: https://gitcode.com/gh_mirrors/w3/w3x2lni 一、价值定位:破解魔兽地图版本兼容难题 魔兽争霸III地图开发者长期面临版本碎片化挑战&…...
首款支持AI渗透的WebShell管理工具,聊个天就能实现免杀|实现高隐蔽内网渗透
0x01 工具介绍 金刚狼首款支持 AI 渗透的 WebShell MCP,也是一款支持多层内网级联的 ASPX、ASHX 高级 WebShell 管理工具。工具采用 AES 加密通信,无需代理即可实现内网穿透,支持内存加载各类渗透工具,做到无文件落地隐蔽渗透目标…...
关于腾讯广告算法大赛2025项目分析1 - dataset.py
把原始 jsonl 用户行为序列,转成模型能直接吃的张量tensor和特征字典 一、整体定位 MyDataset 读取训练数据,产出: 用户序列 seq正样本 pos负样本 negtoken 类型各类特征时间特征相关原始时间戳 MyTestDataset 读取测试/推理数据,产出 用户序…...
西门子S7-1200 PLC如何通过EtherCat转Profinet网关实现高效IO控制?5步搞定配置
西门子S7-1200 PLC与EtherCat设备的高效集成:5步实现Profinet网关配置 在工业自动化领域,不同协议设备之间的无缝通信一直是工程师面临的挑战。当您需要将EtherCat设备接入西门子S7-1200 PLC的Profinet网络时,协议转换网关成为关键桥梁。本文…...
SDMatte与前端Vue.js结合:打造交互式在线抠图工具
SDMatte与前端Vue.js结合:打造交互式在线抠图工具 1. 引言:让抠图变得简单高效 想象一下这样的场景:电商运营每天需要处理上百张商品图片,设计师反复在Photoshop里手动抠图,自媒体创作者为找不到合适的透明背景素材发…...
终极指南:Windows虚拟磁盘驱动器的完整解决方案ImDisk深度解析
终极指南:Windows虚拟磁盘驱动器的完整解决方案ImDisk深度解析 【免费下载链接】ImDisk ImDisk Virtual Disk Driver 项目地址: https://gitcode.com/gh_mirrors/im/ImDisk ImDisk Virtual Disk Driver是一款专为Windows系统设计的虚拟磁盘驱动解决方案&…...
2026年隧道代理技术解析与主流服务商测评
凌晨两点,某美妆品牌运营小李被手机告警震醒——大促期间的竞品价格采集任务又断了。日志里满是403报错,手动切换了几个代理IP,任务勉强恢复,可第一波流量高峰的数据已经错过了。这不是小李第一次遇到这种麻烦,也不是个…...
