LeetCode刷题(11)
Count and Say
参考了讨论部分的一个解法,使用正则表达式,很有灵性!
s = '1'
for _ in range(n - 1):s = ''.join(str(len(group)) + digitfor group, digit in re.findall(r'((.)\2*)', s))
return s
首先是正则表达式((.)\2*),外括号里的模式是匹配连续的重复字符串,内括号里的是任意字符,并通过\2引用内括号,通过*贪婪匹配多个连续相同的字符。之后使用re.findall,使用效果如下:
s=’12111212121’
t=re.findall(r’((.)\2*)’, s)
print(t)
[(‘1’, ‘1’), (‘2’, ‘2’), (‘111’, ‘1’), (‘2’, ‘2’), (‘1’, ‘1’), (‘2’, ‘2’), (‘1’, ‘1’), (‘2’, ‘2’), (‘1’, ‘1’)]
First Missing Positive
第一个消失的正整数,有一个数列,从1开始找起,找到第一个不在这个数列中的正整数,要求用O(n)时间,且不能有其他空间开销
def firstMissingPositive(self, nums):""":type nums: List[int]:rtype: int"""if len(nums) == 0:return 1i = 0while i < len(nums):if nums[i] > 0 and nums[i] != i + 1 and nums[i] <= len(nums) and nums[nums[i] - 1] != nums[i]:#nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]tmp = nums[nums[i] - 1]nums[nums[i]-1] = nums[i]nums[i] = tmpelse:i += 1for i in xrange(len(nums)):if nums[i] != i + 1:return i + 1return len(nums) + 1
#nums[i], nums[nums[i]-1] = nums[nums[i]-1], nums[i]该行被注释掉,加入tmp完成运算,否则会死循环,隐隐感觉这部分跟python内部机制有关,等之后再详细分析。
另外还做了一些测试:
>>> nums=[1,2]
>>> nums
[1, 2]
>>> nums[0],nums[1] = nums[1], nums[0]
>>> nums
[2, 1]
说明跟索引有关,且实际运行中该注释掉的语句完成了运行,并没有在该句死循环。
LeetCode刷题(11)相关推荐
- LeetCode刷题-11
11.盛最多水的容器 中等难度题,通过率63.8% 最优解法:双指针法 分析 我们先从题目中的示例开始,一步一步地解释双指针算法的过程.稍后再给出算法正确性的证明. 题目中的示例为: [1, 8, 6 ...
- LeetCode刷题记录11——290. Word Pattern(easy)
LeetCode刷题记录11--290. Word Pattern(easy) 目录 LeetCode刷题记录11--290. Word Pattern(easy) 题目 语言 思路 源码 后记 题目 ...
- LeetCode刷题记录4——67. Add Binary(easy)
LeetCode刷题记录4--67. Add Binary(easy) 目录 LeetCode刷题记录4--67. Add Binary(easy) 题目 语言 思路 后记 题目 今天这题是与字符串相 ...
- LeetCode刷题记录1——717. 1-bit and 2-bit Characters(easy)
LeetCode刷题记录1--717. 1-bit and 2-bit Characters(easy) LeetCode刷题记录1--717. 1-bit and 2-bit Characters( ...
- Leetcode刷题第1题:两数之和(基于Java语言)
** Leetcode刷题第1题:两数之和(基于Java语言) ** 题目: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标 ...
- c语言贪心算法合并箭,LeetCode刷题题库:贪心算法
LeetCode刷题笔记:贪心算法 自大学开始,我便陆陆续续的学习一些 算法和数据结构 方面的内容,同时也开始在一些平台刷题,也会参加一些大大小小的算法竞赛.但是平时刷题缺少目的性.系统性,最终导致算 ...
- C#LeetCode刷题-程序员面试金典
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-程序员面试金典 | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode程序员面试金典 ...
- C#LeetCode刷题-剑指Offer
本文由 比特飞 原创发布,欢迎大家踊跃转载. 转载请注明本文地址:C#LeetCode刷题-剑指Offer | .Net中文网. C#LEETCODE刷题概述 概述 所有LeetCode剑指Offer ...
- C#LeetCode刷题-动态规划
动态规划篇 # 题名 刷题 通过率 难度 5 最长回文子串 22.4% 中等 10 正则表达式匹配 18.8% 困难 32 最长有效括号 23.3% 困难 44 通配符匹配 17.7% 困难 53 最 ...
- C#LeetCode刷题-二分查找
二分查找篇 # 题名 刷题 通过率 难度 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组的中位数(Median of Two Sorted Arrays)-该题未达最优解 30 ...
最新文章
- expdp数据泵导出操作
- java for 删除 list 中的项
- 语言 提取列名_学习健明老师发布的R语言练习题的学习笔记(二)
- Python:入门(3)
- 真香定律!一文带你搞懂Android多线程Handler,成功入职腾讯
- java调用一个方法后怎么继续执行不等待该方法的返回_Java面试题大全2020版(二)...
- C# 自定义配置文件
- 导入工程出错原因及解决
- 安卓自定义相机拍照功能全解(不调用系统相机)
- java学习路径1--转自byr
- pythonATM,购物车项目实战_补充7-start.py
- MATLAB 2020b 中文版安装教程(简洁版)
- 简单的java游戏编程代码_java游戏编程(1)线程
- win10LTSC(企业版)命令激活
- springboot中@SpringBootApplication的扫描范围,以及多模块的扫描问题
- 云知声发布多模态AI芯片战略,同步曝光三款在研芯片...
- Sharepoint安装必备组件下载地址
- 中国黑客生存特写,互联网金钱帝国里的英雄和盗匪
- python包:scikit-learn
- 软件测试---性能测试
热门文章
- Oracle中的包、存储过程、函数被锁定解决方案
- 博文视点大讲堂28期 “助你赢在软件外包行业”成功举办
- 【ADO.NET基础】加密方法公共类
- C语言 · 数组查找及替换
- vim:复制复制字符到vim的命令行窗口的4种方法
- ListView系列(七)——Adapter内的onItemClick监听器四个arg参数 (转)
- 免费资源:Polaris UI套件 + Linecons图标集(AI, PDF, PNG, PSD, SVG)
- 如何用HttpWebRequest下载gzip, deflate压缩的页面
- 登陆SQL Server 2000数据库提示超时已过期的解决方法
- 【报告分享】2021年Z世代“潮力量”洞察报告.pdf(附下载链接)