Mini Uber

2024-09-04 14:48
文章标签 mini uber

本文主要是介绍Mini Uber,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

实现一个迷你优步

  1. 司机提供他们的位置
  2. 用户请求,然后返回一个匹配的司机

实现下列函数

  • report(driver_id, lat, lng)
    • 如果没有找到匹配的trip,返回null
    • 否则返回匹配trip信息
  • request(rider_id, lat, lng)
    1. 建立一个trip
    2. 找到一个最近的司机,标记这个司机为不可用
    3. 将司机id填入trip
    4. 返回trip

Java中trip的定义

public class Trip {public int id; // trip's id, primary keypublic int driver_id, rider_id; // foreign keypublic double lat, lng; // pick up location
}

思路:Integer to Trip,  Integer to Location,一个是用来返回已经有trip的driver, 一个是用来返回没有trip的driver,求最近就是求现有driver的跟rider的最小值;更新两个hashmap即可;如果找到了driver,就把他从没有trip的hashmap中去掉;

/*** Definition of Trip:* public class Trip {*     public int id; // trip's id, primary key*     public int driver_id, rider_id; // foreign key*     public double lat, lng; // pick up location*     public Trip(int rider_id, double lat, double lng);* }* Definition of Helper* class Helper {*     public static double get_distance(double lat1, double lng1,double lat2, double lng2) {*         // return distance between (lat1, lng1) and (lat2, lng2)*     }* };*/
public class MiniUber {private class Location {public double lat;public double lng;public Location(double lat, double lng) {this.lat = lat;this.lng = lng;}}private HashMap<Integer, Trip> driver2Trip;private HashMap<Integer, Location> driver2Location;public MiniUber() {driver2Trip = new HashMap<Integer, Trip>();driver2Location = new HashMap<Integer, Location>();}// @param driver_id an integer// @param lat, lng driver's location// return matched trip information if there have matched rider or nullpublic Trip report(int driver_id, double lat, double lng) {if(driver2Trip.containsKey(driver_id)) {return driver2Trip.get(driver_id);} else {// update location hashmap;if(driver2Location.containsKey(driver_id)) {driver2Location.get(driver_id).lat = lat;driver2Location.get(driver_id).lng = lng;} else {driver2Location.put(driver_id, new Location(lat, lng));}// return null trip info;return null;}}// @param rider_id an integer// @param lat, lng rider's location// return a trippublic Trip request(int rider_id, double lat, double lng) {Trip trip = new Trip(rider_id, lat, lng);double distance = -1;int driver_id = -1;for(Integer driver: driver2Location.keySet()) {Location location = driver2Location.get(driver);double dis = Helper.get_distance(lat, lng, location.lat, location.lng);if(distance == -1 || dis < distance) {distance = dis;driver_id = driver;}}if(driver_id != -1) {driver2Location.remove(driver_id);}trip.driver_id = driver_id;driver2Trip.put(driver_id, trip);return trip;}
}

 

这篇关于Mini Uber的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1136283

相关文章

一键部署Phi 3.5 mini+vision!多模态阅读基准数据集MRR-Benchmark上线,含550个问答对

小模型又又又卷起来了!微软开源三连发!一口气发布了 Phi 3.5 针对不同任务的 3 个模型,并在多个基准上超越了其他同类模型。 其中 Phi-3.5-mini-instruct 专为内存或算力受限的设备推出,小参数也能展现出强大的推理能力,代码生成、多语言理解等任务信手拈来。而 Phi-3.5-vision-instruct 则是多模态领域的翘楚,能同时处理文本和视觉信息,图像理解、视频摘要

Uber开发的地图网格化的包h3

通常使用规则化的网格包括三角形,正方形和六边形。三角形或正方形的网格与其相邻的网格中心距离不同,而六边形则没有此种情况,因此,h3使用的是六边形网格. 地图的网格划分以南京为例子 api文档 https://github.com/uber/h3-py https://h3geo.org/docs/community/bindings 在这里插入图片描述h3包地图划分级别,第一列是边长 H3 P

OpenAI发布GPT-4o mini,3.5从此退出历史舞台?

随着OpenAI在2024年7月18日正式发布GPT-4o Mini,无疑在科技界引发了一场新的风暴。这一创新不仅标志着GPT-3.5模型正式退出历史舞台,更预示着人工智能在自然语言处理领域迈入了一个全新的时代。 之前速度最快的模型一直是GPT3.5,随着后来的GPT-4o推出成为了最快。 尽管目前处于初步阶段,第三方测试结果显示GPT4o的响应速度堪称顶尖,这或许可以归因于其相对较小

来自Uber的12条架构重构经验

来自Uber的12条架构重构经验 2016-02-04  来源:聊聊架构 分类:架构  阅读(56) 评论(0)  对于开发者来说,架构设计是软件研发过程中最重要的一环,所谓没有图纸,就建不了房子。在遍地App的互联网时代,架构设计有了一些比较成熟的模式,开发者和架构师也可以经常借鉴。 但是,随着应用的不断发展,最初的架构往往面临着各种问题,比如无法满足客户的需求、无法实现应用的扩

苹果11月推出新款M4 Mac:Mac mini设计焕新 MacBook Pro仅例行更新

据外媒 MacRumors 报道,苹果公司计划在 11 月推出首批 M4 Mac,这一时间表与去年相似,当时苹果公司在同样的时间点中宣布推出搭载 M3 芯片的 MacBook Pro。 ▲ 苹果公司在 2023 年 10 月 31 日推出的 M3 MacBook Pro 同时根据古尔曼爆料称苹果公司计划在 11 月推出全新设计的 Mac mini,同时为 MacBook Pro 例行更

基于Python的机器学习系列(20):Mini-Batch K均值聚类

简介         K均值聚类(K-Means Clustering)是一种经典的无监督学习算法,但在处理大规模数据集时,计算成本较高。为了解决这一问题,Mini-Batch K均值聚类应运而生。Mini-Batch K均值聚类通过使用数据的子集(mini-batch)来更新簇中心,从而减少了计算量,加快了处理速度。 Mini-Batch K均值算法         Mini-Batch

《路由器开发 - 路由器刷机指南》小米MINI刷机

在网上找了官改固件、breed和路由器固件进行刷机。 官改固件:miwifi_r1cm_firmware_2e9b9_2.21.109.bin 路由器配置: CPU MT7620A 内存 128M DDR2 ROM 16M 2口LAN 1口WAN 1USB2.0 双天线 300M 图1 好了,开始折腾吧。 1原版系统使用 首先要插入外网到WAN口,再插入一根网线到LAN

飞猫智联随身WIFI mini ES-U3产品参数

产品参数 硬件规格接口USB TYPE-A公头,5V1ACPU芯片ZX297520V3wifi芯片SV6158M(南方硅谷)接口类型/SIM卡接口MICRO SIM指示灯1个,三色灯(红、绿、蓝)按键Reset按键,长按3秒恢复出厂设置无线参数无线速率最大支持 3GPP R12 Cat4 带宽:1.4MHz-20MHz LTE-FDD:最大下行速率150Mbps,最大上行速率50Mbps L

Mac Mini爆改Mac Nano,踹进口袋里的M2,让你的灵魂震颤一会会儿

Mac Mini爆改Mac Nano,踹进口袋里的M2,让你的灵魂震颤一会会儿 今天给小伙伴们介绍一款相当好玩的爆改产品Mac Nano,不适合小白不适合垃圾佬不适合低端玩家,最适合极客、发烧友、科学怪才等高端玩家。产品的功能性通常是家常便饭,而要达到艺术层面的需要,就要付出高出几个数量级的代价了,因为那是为享受而设计的。 M2芯片的Mac Mini‌是在‌2023年1月17日‌上市的。苹

微调 OpenAI GPT-4o mini

介绍 在以后的文章中,我希望深入探讨一些技术细节。对于这篇文章,我的重点只是收集最少量的数据、正确格式化以及微调小型语言模型 (SLM)。 之后,我旨在通过并排运行相同的完成场景来在操场上测试模型,以比较标准模型和微调模型。 SLM 的主要优势 许多功能强大的 SLM 都是开源的,可以免费使用;Meta 和 Microsoft 已经开源并提供了一些 SLM。存在许多托管