小李飞刀:用python刷题ing....

叨逼叨

默认每天都要刷两道题。
今天目标已完成。

第一题

26. 删除排序数组中的重复项
难度:简单
类型:数组

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

这题其实我之前做过,但是一直提交失败。
经过昨天的那题数组题,我换了一种for in方式。
之前我采用的是下标来定位,用pop来删除重复项。
这次采用了数组内的每一项来单独做对比,用remove来进行删除操作。

class Solution(object):def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""length = len(nums)if length > 1: \\这个判定很重要point = nums[0]for i in nums[1:]:if point != i:point = ielse:nums.remove(i)print(len(nums))

其中的if length > 1是后面进行修改的,是必须的判定。
因为可能存在空数组的情况,那么length = 0,不需要删除任何项目。
而当只有一个数组的时候,length = 1,同样不需要删除任何项目。

看了下用时,800ms属于中间位置。

clipboard.png

看了下44ms的范例,采用的是下标标记,用了反向的思路。

clipboard.png

因为是有序数组,采用了快慢两种指针,当存在不一致的时候,可以进行覆盖,达到删除的目的。

第二题

80. 删除排序数组中的重复项 II
难度:中等
类型:数组

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

和第一题十分相似,但是多了条件,就是数值可以出现两次,这就需要额外的进行计数。

class Solution:def removeDuplicates(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) < 1:return 0point = nums[0]count = 0 for i in nums[1:]:if point != i:point = icount = 0else:count = count + 1if count == 2:nums.remove(i)count = 1return len(nums)

我的思路都是比较粗暴的办法,就是用变量记录当前的对比值,当对比值出现超出2次时候,就进行remove,和第一题比较接近的思路,方法也大致相同。

clipboard.png
这题的用时会更少一点,但是也是中间位置。

clipboard.png

总结

这两天做的题目都比较相似,而且难度较低,都是数组的题目。
套路比较相似,对python3的删除操作和遍历也有了更深的认识与实践。
后续要开始做更多其他数据结构的题目,不断尝试。

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

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

相关文章

VI-ORB环境配置

参考博客:https://blog.csdn.net/qq_38589460/article/details/82559816 https://blog.csdn.net/Robot_Starscream/article/details/90245456 本机安装的是opencv3.0 在Examples/ROS/ORB-VIO以及/VI-ORB/src/LearnVIORB-RT下的CMakeLists.txt都要进行修改 将find_package(O…

linux vg lv pv

pv由物理卷或者分区组成 pv可以组成一个或者多个vg vg可以分成多个lv 方便扩展 pvs vgs lvs 可以查看当前存在的pv vg lv 我的centos硬盘20g 使用了一段时间 加了100g 这时候 我们可以使用扩展来扩展我们的分区大小 查看自己拥有多少个硬盘 ls /dev/sd* | grep -v [0-9] …

mynt product model: D1000-IR-120标定相机和IMU外参

1. 首先是安装相应的mynt SDK. http://www.myntai.com/mynteye/depth小觅官网,在sdk下拉菜单中点击MYNT EYE Depth SDK,然后选择Linux Installation安装安装步骤说明一步步的安装,安装sample后,测试一下安装是否成功.我的电脑上安装了ROS,所以可以点击上面第一幅图中的ROS Ins…

吉林省第二条国际铁路联运大通道“长珲欧”启动测试

29日&#xff0c;吉林省第二条国际铁路联运大通道“长珲欧”在俄罗斯启动测试。吉林省商务厅供图 29日&#xff0c;吉林省第二条国际铁路联运大通道“长珲欧”在俄罗斯启动测试。吉林省商务厅供图 中新网长春1月29日电 (郭佳)记者29日从吉林省商务厅获悉&#xff0c;该省第二条…

使用Ajax解析数据遇到的问题

数据格式 我最近在使用JQuery的$.ajax访问后台的时候&#xff0c;发现竟然无法解析返回的数据&#xff0c;具体的错误记不清了(以后在遇到问题先截个图)&#xff0c;可以在浏览器的Console中看到一个错误&#xff0c;但是去看这条请求是有数据返回的&#xff0c;所以刚开始我一…

隐藏界面没有必要应用场景

转载于:https://www.cnblogs.com/zengsf/p/8366572.html

mynt product model: D1000-IR-120标定相机和IMU外参之二

1. 在之一中使用kalibr标定mynt相机和内置imu的外参数,使用的是720p,30fps的双目图像和200hz的imu数据,标定结果误差比较大,这一次我们改用480p,60hz的双目图像和200hz的imu数据进行标定,需要在mynt_sdk中的mynteye.launch中进行如下修改. 默认获取图像的2560x720,30fps&#…

AODp

一、AOP是OOP的延续&#xff0c;是&#xff08;Aspect Oriented Programming&#xff09;的缩写&#xff0c;意思是面向切面编程。 AOP&#xff08;Aspect Orient Programming&#xff09;&#xff0c;作为面向对象编程的一种补充&#xff0c;广泛应用于处理一些具有横切性质的…

使用ros发布UVC相机和串口IMU数据

&#xff11;&#xff0e;目的&#xff1a;为了可以标定普通USB相机和固定在相机上的外置IMU的外参,我希望通过ROS获取更高分辨率和更高频率的图像数据,并且可以将图像和imu的topic发布出来,直接使用rosbag record录制话题数据,写入bag文件,这样获得的bag文件直接可以用于相机和…

API自动化测试利器——Postman

自从开始做API开发之后&#xff0c;我就在寻找合适的API测试工具。一开始不是很想用Chrome扩展&#xff0c;用的WizTools的工具&#xff0c;后来试过一次Postman之后就停不下来了&#xff0c;还买了付费的Jetpacks。推出Team Sync Beta之后我又把这个工具推广给团队&#xff0c…

云原生实践之 RSocket 从入门到落地:Servlet vs RSocket

技术实践的作用在于&#xff1a;除了用于构建业务&#xff0c;也是为了验证某项技术或框架是否值得大规模推广。 本期开始&#xff0c;我们推出《RSocket 从入门到落地》系列文章&#xff0c;通过实例和对比来介绍RSocket。主要围绕RSocket如何实现Polyglot RPC、Service Regis…

制作.sens数据集跑通bundlefusion

1. 主要参考这篇博客实现 https://blog.csdn.net/Wuzebiao2016/article/details/94426905 2. 首先就是将自己采集的RGBD图像的保存格式向Bundlefusion需要的格式对齐&#xff0c;如彩色图的命名格式是frame-000000.color.png&#xff0c;深度图的命名规则是frame-000000.depth…

python之moviepy库的安装与使用

目的&#xff1a;因为需要保存一个大大的.mp4视频&#xff0c;以防过程中设备出现异常导致整个长长的视频无法正常保存&#xff0c;所以采用分段保存视频的方式&#xff0c;每500帧保存一段&#xff0c;然后再将视频合到一起&#xff0e;最近刚开始学习python,发现python真的很…

使用iai_kinect2标定kinectV2相机

实验背景&#xff1a;因为需要制作bundlefusion需要的数据集&#xff0c;所以需要使用kinectV2相机获取rgbd图像&#xff0c;年前的时候在我的笔记本上安装了libfreenect2库和iai_kinect2&#xff0c;标定过一次kinecv2相机&#xff0c;然后使用kinectv2相机实时获取的图像实现…

Linux下配置tomcat+apr+native应对高并发

摘要&#xff1a;在慢速网络上Tomcat线程数开到300以上的水平&#xff0c;不配APR&#xff0c;基本上300个线程狠快就会用满&#xff0c;以后的请求就只好等待。但是配上APR之后&#xff0c;Tomcat将以JNI的形式调用Apache HTTP服务器的核心动态链接库来处理文件读取或网络传输…

Firefox 66 将阻止自动播放音频和视频

百度智能云 云生态狂欢季 热门云产品1折起>>> 当我们点击一个链接&#xff0c;或者打开新的浏览器选项卡时&#xff0c;浏览器就开始自动播放视频和声音&#xff0c;这是一件十分烦人的事。Chrome 浏览器早已对这些行为下手了&#xff0c;现在 Firefox 也明确表示要…

Windows 10 关闭Hyper-V

以管理员身份运行命令提示符 关闭 bcdedit /set hypervisorlaunchtype off 启用 bcdedit / set hypervisorlaunchtype auto 禁用DG 转载于:https://www.cnblogs.com/Robbery/p/8397767.html

bundlefusion论文阅读笔记

4. 全局位姿对齐(glob pose alignment) 输入系统的是使用消费级的传感器获取的RGBD数据流&#xff0c;并且保证这些数据中的彩色图像和深度图像是时间和空间上都对齐的。图像分辨率是640x480,频率是30hz。我们的目的就是要找到frames之间的3D对应&#xff0c;然后根据这些对应…

IOC和DI的区别详解

IOC 是英文inversion of control的缩写&#xff0c;意思是控制反转DI 是英文Dependency Injection的缩写&#xff0c;意思是依赖注入 下面用一个简单的例子来描述一下IOC和DI的关系 先看下总结&#xff1a; 依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情&#…

TOMCAT启动到一半停止如何解决

当你的项目过大的时候&#xff0c;往往会导致你的TOMCAT启动时间过长&#xff0c;启动失败&#xff0c;遇到该情况可以试一下下面两招&#xff1a; TOmcat启动到一半的时候停止了&#xff0c;以下原因&#xff1a; 1、 tomcat启动时间超过了设置时间&#xff1a; 解决办法&…