LeetCode 每日一题 2024/4/29-2024/5/5

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 4/291146. 快照数组
      • 4/30 2798. 满足目标工作时长的员工数目
      • 5/1 2462. 雇佣 K 位工人的总代价
      • 5/2 857. 雇佣 K 名工人的最低成本
      • 5/3 1491. 去掉最低工资和最高工资后的工资平均值
      • 5/4 1235. 规划兼职工作
      • 5/5 1652. 拆炸弹


4/291146. 快照数组

快照时无需记录整个数组
只要记录与前一份快照之间的修改
使用history[x]记录x位置元素的修改记录(snapid,value)
查询一个ind位置某个id的数据时
只要在history[ind]中二分找到快照编号小于id的最后一条修改记录值即可

class SnapshotArray(object):def __init__(self, length):""":type length: int"""from collections import defaultdictself.curid = 0self.history = defaultdict(list)def set(self, index, val):""":type index: int:type val: int:rtype: None"""self.history[index].append((self.curid,val))def snap(self):""":rtype: int"""self.curid +=1return self.curid-1def get(self, index, snap_id):""":type index: int:type snap_id: int:rtype: int"""import bisectj = bisect.bisect_left(self.history[index], (snap_id+1,))-1return self.history[index][j][1] if j>=0 else 0

4/30 2798. 满足目标工作时长的员工数目

依次遍历判断是否达到要求

def numberOfEmployeesWhoMetTarget(hours, target):""":type hours: List[int]:type target: int:rtype: int"""ans = 0for h in hours:if h>=target:ans+=1return ans

5/1 2462. 雇佣 K 位工人的总代价

建立两个最小堆 如果左右可选择个数加上被选择k个包含了所有的数值
那么直接返回最小的k个数之和即可

def totalCost(costs, k, candidates):""":type costs: List[int]:type k: int:type candidates: int:rtype: int"""import heapqn = len(costs)if candidates*2+k>n:costs.sort()return sum(costs[:k])pre = costs[:candidates]suf = costs[-candidates:]heapq.heapify(pre)heapq.heapify(suf)ans = 0l,r=candidates,n-candidates-1for _ in range(k):if pre[0]<=suf[0]:ans += heapq.heapreplace(pre, costs[l])l+=1else:ans += heapq.heapreplace(suf, costs[r])r-=1return ans

5/2 857. 雇佣 K 名工人的最低成本

r=wage/quality
单位工作质量的工资从小到大排序
假设k个工人质量和为sumQ 以r为基准发工资 那么总额为sumQ*r
最大堆维护k个quality 获取更小的sumQ

def mincostToHireWorkers(quality, wage, k):""":type quality: List[int]:type wage: List[int]:type k: int:rtype: float"""import heapqqw = sorted(zip(quality,wage),key = lambda x:1.0*x[1]/x[0])h = [-q for q,_ in qw[:k]]heapq.heapify(h)totalq = -sum(h)ans = totalq*1.0*qw[k-1][1]/qw[k-1][0]for q,w in qw[k:]:if q<-h[0]:totalq += heapq.heapreplace(h,-q)+qans = min(ans,totalq*1.0*w/q)return ans

5/3 1491. 去掉最低工资和最高工资后的工资平均值

求总和 最大值 最小值

def average(salary):""":type salary: List[int]:rtype: float"""s = sum(salary)minv = min(salary)maxv = max(salary)n = len(salary)return (s-minv-maxv)/(n-2)

5/4 1235. 规划兼职工作

将工作按结束时间从小到大排列
dp[i]记录截止前i个工作能获得的最大收益
第i-1份工作可以选择做 或者 不做
选择做则需要找到结束时间小于等于开始时间的位置

def jobScheduling(startTime, endTime, profit):""":type startTime: List[int]:type endTime: List[int]:type profit: List[int]:rtype: int"""n = len(startTime)job = sorted(zip(startTime,endTime,profit),key = lambda x:x[1])dp = [0]*(n+1)li = sorted(endTime)def find(r,v):l = 0while l<=r:mid = (l+r)>>1if li[mid]> v:r = mid-1else:l = mid+1return lfor i in range(1,n+1):k = find(i,job[i-1][0])dp[i] = max(dp[i-1],dp[k]+job[i-1][2])return dp[n]

5/5 1652. 拆炸弹

三种情况分别判断

def decrypt(code, k):""":type code: List[int]:type k: int:rtype: List[int]"""n = len(code)ans = [0]*nif k>0:cur = sum(code[:k])for i in range(n):cur = cur-code[i]+code[(k+i)%n]ans[i] = curelif k<0:cur = sum(code[n+k:])for i in range(n):ans[i] = curcur = cur+code[i]-code[(n+k+i)%n]return ans

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/8709.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

苹果Mac用户下载VS Code(Universal、Intel Chip、Apple Silicon)哪个版本?

苹果macOS用户既可以下载通用版&#xff08;Universal&#xff09;&#xff0c;软件将自动检测用户的处理器并进行适配。 也可以根据型号下载对应CPU的版本&#xff1a; 使用Intel CPU的Mac电脑可下载Intel Chip版本&#xff1b; 使用苹果自研M系列CPU的Mac电脑下载Apple Si…

Oracle Patch清理

场景&#xff1a; 在对Oracle安装补丁后&#xff0c;会发现OS上被占用了大量的空间&#xff0c;本文档清理Opatch过程中的一些文件&#xff0c;释放空间 参考文档&#xff1a; Can You Delete $ORACLE_HOME/.patch_storage Directory ? (Doc ID 403218.1) How To Avoid Disk …

【Redis7】10大数据类型之Hash类型

文章目录 1.Hash类型2.常用命令3.示例hset和hgethgetallhlenhkeys和hvalshexistshdelhincrby和hincrbyfloathsetnx 1.Hash类型 Redis中的Hash类型是一种高效的数据结构&#xff0c;用于存储键值对的集合。这种类型特别适用于表示对象&#xff0c;因为它允许你将对象的多个属性…

Context capture/Pix4Dmapper/AutoCAD/CASS/EPS软件的安装流程与使用方法;土方量计算;无人机摄影测量数据处理

目录 专题一 无人机摄影测量技术应用现状及其发展 专题二 基本原理和关键技术讲解 专题三 无人机影像外业数据获取 专题四 数据处理环境建立与软件熟悉 专题五 GNSS数据土方量计算 专题六 基于无人机影像数据的正射影像制作 专题七 基于无人机影像数据的三维模型制作 专…

gocator导出图片

想用3D扫描后的图片&#xff0c;但是系统自带的导出方法很麻烦&#xff0c;所以考虑通过sdk导出 首先需要设置点云亮度 这里是导出图片的关键代码 case GoDataMessageType.SurfaceIntensity: { Debug.WriteLine("SurfaceIntensity "); GoSu…

线段树专题

落谷1607 #include<bits/stdc.h> using namespace std;#define ls u<<1 #define rs u<<1|1const int N 1e5;int n, k, c, ans; struct line {int l, r, m; // m为候车的牛的数量bool operator<(line b) {return r < b.r;} }s[N];struct tree {int l, …

antV X6的简要使用教程

&#x1f9d1;‍&#x1f393; 个人主页&#xff1a;《爱蹦跶的大A阿》 &#x1f525;当前正在更新专栏&#xff1a;《VUE》 、《JavaScript保姆级教程》、《krpano》、《krpano中文文档》 ​ ​ ✨ 前言 在我们的日常开发工作中&#xff0c;我们经常需要构建复杂的交互式图…

【MM32F3270火龙果】点亮led

文章目录 前言GPIO的工作模式一、有哪些工作模式&#xff1f;1.1 GPIO的详细介绍1.2 GPIO的内部框图输入模式输出部分 二、操作GPIO点亮led2.1 初始化gpio2.2 写gpio 三、示例代码总结 前言 本文将介绍如何在MM32F3270火龙果微控制器上使用Keil开发环境点亮LED。MM32F3270火龙…

Java中使用FlatBuffers实现序列化

Java 中的 FlatBuffers有助于高速数据序列化/反序列化&#xff0c;消除解析开销。它由 Google 开发&#xff0c;为跨平台数据交换提供无模式、内存高效的解决方案。 Java 开发人员可以利用其直接内存访问来实现最佳性能和最小内存占用&#xff0c;从而提高应用程序速度、可扩展…

Kamailio openssl 3.0.x 需要注意的事项

我们留意到 Debian Bookworm 安装的 openssl 版本是 3.0.x 这里有几个地方要注意&#xff1a; modparam("tls", "init_mode", 1)核心参数 tls_threads_mode 配置为 1 或者 配置为 2版本建议用 v 5.8.1 参考链接&#xff1a; #3832#3765#3791 目前官方…

北交所佣金费率标准是多少?北交所相关信息科普

北交所的佣金费率并非固定不变&#xff0c;而是可以根据投资者的需求和证券公司的政策进行调整。目前北交所的佣金费率最低是万分之二。 一般来说&#xff0c;北交所的佣金费率默认在万分之三左右&#xff0c;但这不是固定的费率。根据证券公司的不同&#xff0c;佣金费率可以…

绝地求生:PCL第五轮数据出炉,XDD与林树入选最佳阵容,韦神真在做事了

距离PCL季后赛开赛还有两天时间&#xff0c;小梦还沉浸在常规赛最后一场WCG和TSG争名额的关键之战&#xff0c;现在看来WCG硬贴PeRo房区那波真是没道理&#xff0c;只能解释为太想拿分导致上头了&#xff0c;导致决赛圈没有余力限制TSG&#xff0c;但这何尝不是TSG自己的剧本&a…

算法训练Day52 | ● 84.柱状图中最大的矩形

84.柱状图中最大的矩形 class Solution { public:int largestRectangleArea(vector<int>& heights) {stack<int> s;s.push(-1);s.push(0);int space 0;for(int i1; i<heights.size(); i){while(s.top()! -1 && (iheights.size() || heights[i]<…

SAF文件选择与真实路径转换

一、构建选择文件与回调方法 //文件选择回调ActivityResultLauncher<String[]> pickFile registerForActivityResult(new ActivityResultContracts.OpenDocument(), uri->{if (uri ! null) {Log.e("cxy", "返回的uri:" uri);Log.e("cxy&q…

【JavaEE初阶系列】——利用Servlet API实现表白墙网站(1.6w字深刻了解前后端交互逻辑)

目录 &#x1f393;准备工作 &#x1f393;了解前端部分知识(主要JS&#xff09; &#x1f393;前后端交互部分 &#x1f388;主要思路 &#x1f6a9;提交信息 &#x1f36d;让前端发起一个ajax请求 &#x1f36d;服务器读取上述请求&#xff0c;并计算出响应 &#x1…

【Stylus详解与引入】

文章目录 Stylus详解与引入一、Stylus简介二、Stylus的特性1. 变量2. 嵌套规则3. 混合&#xff08;Mixins&#xff09;4. 函数5. 条件语句和循环 三、Stylus的引入与配置1. 安装Stylus和stylus-loader2. 配置Webpack3. 在Vue项目中使用Stylus4. 编译Stylus代码四、Stylus的性能…

Gateway的基本配置

Gateway的基本配置通常涉及网络、路由、安全性以及其他一些关键元素。以下是一个关于Gateway基本配置的详细指南&#xff1a; 网络连接配置&#xff1a; 设备连接&#xff1a;确保网关设备与内部网络的交换机、集线器或服务器/计算机正确连接。网络拓扑结构应支持内外通信。IP地…

2024-05-08 问AI: 在深度学习中,介绍一下RMSProp 优化器

文心一言 在深度学习中&#xff0c;RMSProp&#xff08;Root Mean Square Propagation&#xff09;优化器是一种常用的优化算法&#xff0c;主要用于神经网络训练的梯度下降算法的变体。它是对Adagrad优化器的一种改进&#xff0c;旨在解决Adagrad中学习率过快下降的问题。 R…

设计模式有哪些基本原则

目录 开闭原则(Open Closed Principle) 里氏替换原则(Liskov Substitution principle) 单一职责原则(Single Responsibility Principle,SRP)

RAC GCS_SERVER_PROCESSES参数

参考文档&#xff1a; GCS_SERVER_PROCESSES (oracle.com) 在awr报告中&#xff0c;看到addm建议如下&#xff1a; 其中有Global Cache Messaging和 Global Cache Congestion Activity During the Analysis Period ----------------------------------- Total database tim…