面试150,数组 / 字符串

27. 移除元素

在这里插入图片描述

class Solution:def removeElement(self, nums: List[int], val: int) -> int:# 把不等于 val 的值移动到前面n = len(nums)left = 0for right in range(n):if nums[right] != val:nums[left] = nums[right]left += 1return left

26. 删除有序数组中的重复项

在这里插入图片描述

只保留 1 个元素

class Solution:def removeDuplicates(self, nums: List[int]) -> int:n = len(nums) left = 0  # 指向有效数组的最后一个元素# right 遍历数组, 每次与有效数组最后一个元素比较是否相同for right in range(n):if nums[right] != nums[left]:left += 1nums[left] = nums[right]return left + 1

80. 删除有序数组中的重复项 II

在这里插入图片描述
保留 k 个元素,次数 k = 2

class Solution:def removeDuplicates(self, nums: List[int]) -> int:n = len(nums)left = 0  # 指向有效数组的后一个位置k = 2  # 保留两个for right in range(n):if left < k or nums[right] != nums[left-k]:nums[left] = nums[right]left += 1return left

274. H 指数

在这里插入图片描述
一般的情况下

class Solution:def hIndex(self, citations: List[int]) -> int:n = len(citations)cnt = [0] * (n + 1)  # cnt[i] 引用次数 >= i 的数目for v in citations:cite = min(v, n)  # 引用次数大于 n 的情况, 算作ncnt[cite] += 1s = 0for i in range(n, -1, -1):s += cnt[i]  # 引用次数>=i的数量if s >= i:return i

有序的情况下

class Solution:def hIndex(self, citations: List[int]) -> int:# 有h篇论文的cite次数>=hn = len(citations)citations.sort()ans = 0for i, v in enumerate(citations):d = n - i + 1  # 剩余文章数if v >= d:return d

380. O(1) 时间插入、删除和获取随机元素

在这里插入图片描述
list 删除尾元素的速度为 O(1)
所以删除的时候,可以将待删除的值与末尾元素交换,然后删除末尾元素

from random import choice
class RandomizedSet:def __init__(self):self.nums = []self.indices = {}  # { val: 在nums中的下标 }def insert(self, val: int) -> bool:if val in self.indices:return False# 如果不在, 则在末尾插入元素self.indices[val] = len(self.nums)self.nums.append(val)return Truedef remove(self, val: int) -> bool:if val not in self.indices:return Falseid = self.indices[val]  # val在nums中的下标# 1.将末尾元素与待删除元素的位置交换self.nums[id] = self.nums[-1]  # 将末尾元素的值移动到当前val位置self.indices[self.nums[id]] = id  # 更新对应的id# 删除 valself.nums.pop()del self.indices[val]return Truedef getRandom(self) -> int:return choice(self.nums)

134. 加油站

在这里插入图片描述
“已经在谷底了,怎么走都是向上。”

下图为,从 0 加油站出发,到达每个站时的油量变化
可以看出,当走到 3 号加油站时,油量达到最低
在这里插入图片描述
所以从该点出发,之后的油量都不会比当前还低

在这里插入图片描述

同时,判断 sum(gas)sum(cost) 的大小关系

  • 如果 sum(gas) >= sum(cost) ,则一定有解
  • 反之没有,返回 -1
class Solution:def canCompleteCircuit(self, gas: List[int], cost: List[int]) -> int:# 先计算从 0 号加油站出发的油量变化,然后从中找到油量最低时所处的加油站ans = 0min_s = 0  # 表示从 0 出发遇到的最小油量点s = 0for i, (g, c) in enumerate(zip(gas, cost)):s += g - c  # 在 i 处加油,然后出发从 i 到 i+1if s < min_s:min_s = s  # 更新最小油量ans = i + 1  # 注意 s 减去 c 之后,汽车在 i+1 而不是 i# 循环结束后,s 即为 gas 之和减去 cost 之和if s < 0:  # 说明不存在可行解return -1else:return ans

13. 罗马数字转整数

在这里插入图片描述

class Solution:def romanToInt(self, s: str) -> int:# 小数在前表示<减去>, 小数在后表示<加上># 从后往前遍历, 判断当前数是否比上一个数大# 如果大于上一个数, 则直接加, 反之用减d = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000}s = s[::-1]last_val = 0ans = 0for c in s:v = d[c]if v >= last_val:ans += velse:ans -= vlast_val = vreturn ans

12. 整数转罗马数字

在这里插入图片描述

class Solution:def intToRoman(self, num: int) -> str:hashmap = {1000:'M', 900:'CM', 500:'D', 400:'CD',100:'C', 90:'XC',50:'L', 40:'XL', 10:'X', 9:'IX', 5:'V', 4:'IV', 1:'I'}ans = ''for key in hashmap:if num // key != 0:count = num // keyans += hashmap[key] * countnum %= keyreturn ans


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

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

相关文章

【江科大STM32】TIM输入捕获模式PWMI模式测频率

一、输入捕获测频率 接线图&#xff1a; 测信号的输入引脚为PA6&#xff0c;信号从PA6进来&#xff0c;待测的PWM信号也是STM32自己生成的&#xff0c;输出引脚是PA0&#xff0c;所以接线这里直接用一根线将PA0引到PA6就可以了。 如果有信号发生器的话&#xff0c;也可以设置成…

湖仓一体化及冷、热、实时三级存储

一、湖仓一体化&#xff08;Lakehouse&#xff09; 湖仓一体化&#xff08;Lakehouse&#xff09;是数据湖&#xff08;Data Lake&#xff09;与数据仓库&#xff08;Data Warehouse&#xff09;的结合&#xff0c;旨在解决传统数据架构中数据孤岛、存储冗余、计算性能不足等问…

go切片定义和初始化

1.简介 切片是数组的一个引用&#xff0c;因此切片是引用类型&#xff0c;在进行传递时&#xff0c;遵守引用传递的机制。切片的使用和数组类似&#xff0c;遍历切片、访问切片的元素和切片的长度都一样。。切片的长度是可以变化的&#xff0c;因此切片是一个可以动态变化的数…

游戏引擎学习第138天

仓库:https://gitee.com/mrxiao_com/2d_game_3 资产&#xff1a;game_hero_test_assets_003.zip 发布 我们的目标是展示游戏运行时的完整过程&#xff0c;从像素渲染到不使用GPU的方式&#xff0c;我们自己编写了渲染器并完成了所有的工作。今天我们开始了一些新的内容&#…

毕业项目推荐:基于yolov8/yolov5/yolo11的暴力行为检测识别系统(python+卷积神经网络)

文章目录 概要一、整体资源介绍技术要点功能展示&#xff1a;功能1 支持单张图片识别功能2 支持遍历文件夹识别功能3 支持识别视频文件功能4 支持摄像头识别功能5 支持结果文件导出&#xff08;xls格式&#xff09;功能6 支持切换检测到的目标查看 二、数据集三、算法介绍1. YO…

docker中kibana启动后,通过浏览器访问,出现server is not ready yet

问题&#xff1a;当我在浏览器访问kibana时&#xff0c;浏览器给我报了server is not ready yet. 在网上试了很多方法&#xff0c;都未能解决&#xff0c;下面是我的方法&#xff1a; 查看kibana日志&#xff1a; docker logs -f kibana从控制台打印的日志可以发现&#xff…

在 Docker 中,无法直接将外部多个端口映射到容器内部的同一个端口

Docker 的端口映射是一对一的&#xff0c;即一个外部端口只能映射到容器内部的一个端口。 1. 为什么不能多对一映射&#xff1f; 端口冲突&#xff1a; 如果外部多个端口映射到容器内部的同一个端口&#xff0c;Docker 无法区分外部请求应该转发到哪个内部端口&#xff0c;会…

游戏引擎学习第120天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上次回顾&#xff1a;周期计数代码 我们正在进行一个项目的代码优化工作&#xff0c;目标是提高性能。当前正在优化某个特定的代码片段&#xff0c;已经将其执行周期减少到48个周期。为了实现这一目标&#xff0c;我们设计了一个…

C++中的.h文件一般是干什么的?

在C中&#xff0c;.h 文件通常是 头文件&#xff08;Header File&#xff09;&#xff0c;它们的主要作用是声明类、函数、常量、宏以及其他在多个源文件&#xff08;.cpp文件&#xff09;之间共享的元素。头文件提供了一个接口&#xff0c;使得不同的源文件能够访问这些共享的…

基础算法总结

基础算法总结 1、模拟1.1 什么是模拟算法1.2 算法题1.2.1 多项式输出1.2.2 蛇形方阵 2 高精度算法2.1 什么是高精度算法2.2 算法题2.2.1 高精度加法 2.2.2 高精度乘法 3 普通枚举3.1 算法题3.1.1 铺地毯 3.1.2 回文日期 4 前缀和算法4.1 什么是前缀和4.2 算法题4.2.1 最大子段和…

密码学(哈希函数)

4.1 Hash函数与数据完整性 数据完整性&#xff1a; 检测传输消息&#xff08;加密或未加密&#xff09;的修改。 密码学Hash函数&#xff1a; 构建某些数据的简短“指纹”&#xff1b;如果数据被篡改&#xff0c;则该指纹&#xff08;以高概率&#xff09;不再有效。Hash函数…

游戏引擎学习第135天

仓库:https://gitee.com/mrxiao_com/2d_game_3 回顾 game_asset.cpp 的创建 在开发过程中&#xff0c;不使用任何现成的游戏引擎或第三方库&#xff0c;而是直接基于 Windows 进行开发&#xff0c;因为 Windows 目前仍然是游戏的标准平台&#xff0c;因此首先在这个环境中进行…

Linux:文件描述符与重定向

目录 一、文件描述符 1.文件内核对象 2.文件描述符分配原则 二、文件重定向 1.重定向的现象 输出重定向 输入重定向 dup2 2.重定向的使用 三、标准输出和标准错误 继上篇文章中&#xff0c;我们了解了fd打印的值为文件描述符&#xff0c;那么它还有什么作用呢&…

白盒测试(3):PCB阻抗测试方法

PCB阻抗测试是确保信号完整性的关键&#xff0c;通过测量走线的特性阻抗&#xff0c;验证其是否符合设计目标。常用方法包括时域反射法&#xff08;TDR&#xff09;、网络分析仪法和仿真软件法。TDR通过分析反射信号定位阻抗异常&#xff0c;网络分析仪通过S参数计算阻抗&#…

CentOS 7 安装Nginx-1.26.3

无论安装啥工具、首先认准了就是官网。Nginx Nginx官网下载安装包 Windows下载&#xff1a; http://nginx.org/download/nginx-1.26.3.zipLinxu下载 wget http://nginx.org/download/nginx-1.26.3.tar.gzLinux安装Nginx-1.26.3 安装之前先安装Nginx依赖包、自行选择 yum -y i…

笔记:如何使用XAML Styler以及在不同的开发环境中使用一致

一、目的&#xff1a;分享如何使用XAML Styler以及在不同的开发环境中使用一致 XAML Styler 是一个 Visual Studio 扩展&#xff0c;用于自动格式化和整理 XAML 文件。它可以帮助开发者保持一致的代码风格&#xff0c;提高代码的可读性和可维护性。以下是如何在 Visual Studio …

分布式存储学习——HBase概述

1.1 HBase概述 1.1.1 理解大数据背景 1.1.2 HBase是什么 1.1.3 HBase与Hadoop的关系 1.1.4 HBase的核心功能模块 1.1.5 HBase的应用场景和经典案例 1.1.6 小结 本文参考于学校《HBase应用于开发》教材 1.1 HBase概述 本节将介绍大数据背景和HBase的基本概念&#xff0c…

交叉编译openssl及curl

操作环境&#xff1a;Ubuntu20.04 IDE工具&#xff1a;Clion2020.2 curl下载地址&#xff1a;https://curl.se/download/ openssl下载地址&#xff1a;https://openssl-library.org/source/old/index.html 直接交叉编译curl会报错找不到openssl&#xff0c;所以需要先交叉编…

MDM 如何彻底改变医疗设备的远程管理

在现代医疗行业迅速发展的格局中&#xff0c;医院和诊所越来越依赖诸如医疗平板和移动工作站等移动设备。这些设备在提高工作效率和提供卓越的患者护理方面发挥着关键作用。然而&#xff0c;随着它们的广泛使用&#xff0c;也带来了一系列挑战&#xff0c;例如在不同地点确保数…

零基础C语言学习日志22(自定义类型:联合和枚举)

目录 联合体 联合体类型的声明 联合体的特点 相同成员联合体和结构体的对比 联合体大小的计算 例子 枚举类型 枚举类型的声明 枚举类型的优点 枚举类型的使用 联合体 联合体类型的声明 像结构体一样&#xff0c;联合体也是由一个或者多个成员构成&#xff0c;这些成…