LeetCode中,Python一行代码能干啥?

【力扣算法】【python】矩阵置零 题目描述 编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。 示例1: 输入: [ [1,1,1], [1,0,1], [1,1,1] ] 输出: [ [1,0,1], [0,0,0], [1,0,1] ] 示例2: 输入: [ [0,1,2,0], [3,4,5,2], [1,3,1,5] ] 输出: [ [0,0,0,0], [0,4,5,0], [0,3,1,0] ] 来源:力扣(LeetCode) 链接:https://leet 阅读详情

导读

都说python语言简洁、集成高效,一行代码往往能实现很多复杂的操作,比如两变量交换、心形输出、打印乘法口诀等等。但这些总归还是不太实用。那么我们换做在LeetCode中,看看用python一行代码都能解决什么问题。

注:以下题目均来自LeetCode。

Lee‍tCod‍e789# 逃脱阻碍者

‍ ‍

你在进行一个简化版的吃豆人游戏。你从 (0, 0) 点开始出发,你的目的地是 (target[0], target[1]) 。地图上有一些阻碍者,第 i 个阻碍者从 (ghosts[i][0], ghosts[i][1]) 出发。

每一回合,你和阻碍者们*可以*同时向东,西,南,北四个方向移动,每次可以移动到距离原位置1个单位的新位置。

如果你可以在任何阻碍者抓住你之前到达目的地(阻碍者可以采取任意行动方式),则被视为逃脱成功。如果你和阻碍者同时到达了一个位置(包括目的地)都不算是逃脱成功。

当且仅当你有可能成功逃脱时,输出 True。

来源:力扣(LeetCode)789#逃脱阻碍者

题目理解不难,实际上就是判断游戏者是否比所有阻碍者都更接近目的地,当然是在曼哈顿距离下的接近。所以程序实现的核心即是判断一个值比多个值都更小。想到all函数的用法。

1class Solution:
2    def escapeGhosts(self, ghosts: List[List[int]], target: List[int]) -> bool:
3        return all([abs(target[0])+abs(target[1]) < abs(ghost[0]-target[0])+abs(ghost[1]-target[1]) for ghost in ghosts])

关键点:

  • 曼哈顿距离求解

  • 列表推导式求解多个判断结果

  • all函数对多个逻辑结果判断

LeetCode1347# 制造字母异位词

给你两个长度相等的字符串 s 和 t。每一个步骤中,你可以选择将 t 中的 任一字符 替换为 另一个字符。返回使 t 成为 s 的字母异位词的最小步骤数。字母异位词 指字母相同,但排列不同的字符串。  

示例 1: 

输出:s = "bab", t = "aba" 

输出:1

提示:用 'b' 替换 t 中的第一个 'a',t = "bba" 是 s 的一个字母异位词。 

来源:力扣(LeetCode)1347#制造字母异位词的最小步骤数

构造字母异位词,实际上就相当于以字符串s为基础,判断t中有几个和其不重叠的字符个数,考虑用python自带库collections中的计数器Counter实现。

1class Solution:
2    def minSteps(self, s: str, t: str) -> int:
3        return sum((collections.Counter(s) - collections.Counter(t)).values())

关键点:

  • Counter计数器可以实现字符计数功能

  • Counter类减法中,以前者为基数,且仅保留正数部分(即前面没有的而后面独有的,减法不保留)

  • sum求和计数器之差

LeetCode48# 旋转图像

给定一个 n × n 的二维矩阵表示一个图像。将图像顺时针旋转 90 度。 说明:你必须在原地旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要使用另一个矩阵来旋转图像。 

示例 1: 

给定 matrix =  [ [1,2,3],  

                          [4,5,6],   

                          [7,8,9] ], 

原地旋转输入矩阵,使其变为: [ [7,4,1],  

                                                  [8,5,2],   

                                                  [9,6,3] ] 

来源:力扣(LeetCode)48#旋转图像

图像的旋转相当于是对矩阵先转置再左右翻转,而实现python中转置则必然是用ZIP函数,左右翻转即是对列表逆序。

1class Solution:
2    def rotate(self, matrix: List[List[int]]) -> None:
3        """
4        Do not return anything, modify matrix in-place instead.
5        """
6        matrix[:] = [lyst[::-1] for lyst in zip(*matrix)]

关键点:

  • zip函数对嵌套列表实现"转置"

  • 列表逆序操作

  • 嵌套列表的inplace需要用matrix[:]

LeetCode面试题50# 只出现1次字符

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 

示例: 

s = "abaccdeff" 

返回 "b" 

s = ""  

返回 " " 

来源:力扣(LeetCode)面试题50. 第一个只出现一次的字符

涉及到出现次数,想到用Counter;要求找出第一个出现,而Counter刚好保留出场顺序,再加上必要的条件特判即可。

1class Solution:
2    def firstUniqChar(self, s: str) -> str:
3        return ([k for k, v in collections.Counter(s).items() if v==1]+[' '])[0]

关键点:

  • Counter实现计数,并保留字符先后顺序

  • 列表推导式筛选仅出现1次字符

  • 加一个空格字符列表避免结果为空

  • 输出第一个结果

LeetCode面试题58# 左旋转字符串

字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。  

示例 1: 

输入: s = "abcdefg", k = 2 

输出: "cdefgab" 

来源:力扣(LeetCode)面试题58 - II. 左旋转字符串

提到旋转,可以想到用collections模块中deque的rotate接口(参考Python内置容器),但那个是inplace操作。直接对原字符串拼接,再从旋转后目标位置截取相应长度。

1class Solution:
2    def reverseLeftWords(self, s: str, n: int) -> str:
3        return (s+s)[n:n+len(s)]

关键点:

  • 字符串拼接实现扩展

  • 左旋n个相当于起始索引右移到n

LeetCode914# 卡牌分组

给定一副牌,每张牌上都写着一个整数。此时,你需要选定一个数字 X,使我们可以将整副牌按下述规则分成 1 组或更多组:每组都有 X 张牌。组内所有的牌上都写着相同的整数。仅当你可选的 X >= 2 时返回 true。  

示例 1: 

输入:[1,2,3,4,4,3,2,1] 

输出:true

解释:可行的分组是 [1,1],[2,2],[3,3],[4,4] 

来源:力扣(LeetCode)914. 卡牌分组

本题还是比较难想的,需要数学知识作为支撑。因为要求相同的数字分为一组而且还要统计不同计数间能否存在共同的分组大小,用counter;目标是求可能分组大小越大越好,实际上是要找最大公约数;有N个数字的计数那么就是N个计数的最大公约数。

1class Solution:
2    def hasGroupsSizeX(self, deck: List[int]) -> bool:
3        import functools
4        return functools.reduce(math.gcd, collections.Counter(deck).values()) > 1

关键点:

  • counter实现计数

  • math.gcd实现求解最大公约数

  • reduce对列表中两两求解最大公约数


强大的内置库、简洁的python语言!


● 80%的人都不知道,全球Python库下载前10名

● 我珍藏的一些好的Python代码,技巧|上篇

● 爬取300本Python书籍,用Python告诉你哪家强?

● 简单几步,100行代码用Python画一个蝙蝠侠的logo

● 我用Python分析了《青春有你2》109位漂亮小姐姐,真香!

点击阅读原文,原创400篇干货文章

Leetcode top100题目及解答代码 (Python) 代码 代码放置在github中:https://github.com/isthegoal/leetcode_top125 使用了大量注释进行了题目 方案的解读。(类似形式如下) 题目 1 两数之和 42.20% Easy 2 两数相加 30.70% Medium 3 无重复字符的最长子串 28.00% Medium 4 寻找两个有序数组的中位数 25.60% ... 阅读详情

相关推荐

LeetCode编程挑战:Python解题指南

本文还有配套的精品资源,点击获取 简介:通过解决LeetCode上的编程题目,提升Python编程技能。掌握Python基础语法,了解算法与数据结构,利用Python内置模块,优化解决方案的效率,编写单元测试,实现代码复用和模块化,使用版本控制,阅读他人代码,博客分享解题经验,持续学习和实践。 1. Python基础语法和leetcode入门 1.1 Pyt...

weixin_35756637的博客 1268

LeetCode 的主要功能

文章目录LeetCode 简介LeetCode 的题库功能LeetCode 的题库列表题目难度题目标签执行和提交评论和题解LeetCode 的其他功能学习讨论竞赛周赛和双周赛季赛求职在线面试 LeetCode 简介 力扣 (LeetCode) 是定位为求职的做题网站,题库以算法题为主。LeetCode 的题目数量众多,而且在持续增加新题。 除了题库以外,LeetCode 还有学习、讨论、竞赛等功能。 LeetCode 的题库功能 LeetCode 的题库列表 LeetCode 的题库以算法题为主。除了算法题

stormsunshine的博客 3680

leetcode 代码1-30题 纯python

1-30题的答案 后续答案我继续写再上传 有的代码自己不会 是参考别人的代码,其中缺了10题,20题与30题 没找到合适的python代码,等我自己写好 或者找到别人可用的,再重新上传

LeetCode刷题python详解

LeetCode刷题 最近想要练一练代码能力,得知LeetCode这个网站挺不错的,所以便开始刷题。 LeetCode中国网址 在这里主要就是练习一下python,其它编程语言可能基本不会涉及到。 从最简单的开始题——两数相加开始。 先附带一下题目: 首先是最简单也是最容易想到的解法: class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :

w0714的博客 1万+

【初阶】手把手教你轻松上手Denodo | 连接数据库并创建基本视图 (二)

在本教程的第二部分,我们将涵盖:连接到数据库,与创建基本视图。

Denodo的博客 1113

告别Failed to start错误!保姆级教程:用Ubuntu20.04安装盘搞定GRUB与系统服务修复

本文提供Ubuntu20.04系统启动失败的专业修复指南,详细讲解如何利用安装盘解决GRUB与系统服务问题,避免重装系统导致的数据丢失。涵盖分区挂载、chroot环境操作、服务诊断与修复等实用技巧,帮助用户高效恢复系统正常运行。

weixin_32578161的博客 331

Leetcode刷题技巧总结篇(python版)

持续更新…… 1 求字符差值 python不可以直接进行字符减运算。当需要进行字符之间的减运算时,我们可以用ord()函数。ord()是python自带的函数,无需导入。 2 字符串反转 string='leetcode' print(string[::-1]) 3 数组元素计数 import collections li=[1,2,2,4,5,5] cnt = collections.Counter(li) print(cnt) 4 字典遍历 cnt={1:4,2:3} # 遍历键值对 for

杂文集 1万+

mot_challenge官方评估代码

mot_challenge官方代码使用介绍 评估mot17验证集:每个视频序列的后一半帧作为验证集 下载源码:git clone https://hub.fastgit.org/JonathonLuiten/TrackEval.git 官网上下载data样例,放在TrackEval/下,结构如下: data |-- gt | |-- bdd100k | |-- davis | |-- kitti | |-- mot_challenge | | |-- MOT15-train |

qq_37866436的博客 4896

2021-08-19-leetcode-00001

二分查找 704 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1 278 你是产品经理,目前正在带领一个团队开发新的产品。不幸的是,你的产品的最新版本没有通过质量检测。由于每个版本都是基于之前的版本开发的,所以错误的版本之后的所有版本都是错的。 假设你有 n 个版本 [1, 2, ..., n],你想找出导致之后所有版本出错的第一个错误的版本。 你可以通过调用 boo

三毛毳毳的博客 1267

新手别怕!用‘东北天’和‘右前上’坐标系,5分钟搞懂惯性导航姿态矩阵(含Python验证代码)

本文通过‘东北天(ENU)’和‘右前上(RFU)’坐标系,详细解析惯性导航中的姿态矩阵概念。包含Python代码验证,帮助新手快速理解坐标变换、欧拉角及旋转矩阵的构建与应用,特别强调有限转动不可交换性与无限转动次序无关的区别。

weixin_29062255的博客 333

使用HART Server PC软件进行HART设备的组态、调试和分析的完整指南

HART协议是一种用于工业自动化中的双向通信协议,能够在4-20mA模拟信号的基础上叠加数字信号,从而实现设备的远程监控和管理。HART协议兼具模拟和数字通信的优点,被广泛应用于过程控制系统中。设备组态:通过软件可以对HART设备进行组态,配置设备参数。设备调试:支持设备的在线调试和故障诊断,方便快速解决问题。数据分析:提供设备运行数据的实时监控和历史数据分析功能。报表生成:支持生成各类报表,便于数据记录和管理。

qq_38334677的博客 2474

LeetCode中,python一行代码能干啥?

导读都说python语言简洁、集成高效,一行代码往往能实现很多复杂的操作,比如两变量交换、心形输出、打印乘法口诀等等。但这些总归还是不太实用。那么我们换做在LeetCode中,看看用py...

小数志 258

3D打印机控制系统设计:基于MATLAB的3D打印机运动学建模、轨迹规划和控制

控制实现:在控制实现中,需要将轨迹规划的结果转化为实际的控制指令,控制3D打印机按照规划的轨迹进行运动。3D打印机的运动学建模:3D打印机的运动学建模是指将3D打印机的机械结构、传动系统和运动控制部件等抽象成数学模型,以便于进行控制系统的设计和分析。轨迹规划:轨迹规划是指根据3D模型的几何形状和打印机的运动学模型,计算出打印机需要执行的运动轨迹,以便于实现所需的打印效果。控制实现:控制实现是指将轨迹规划的结果转化为控制指令,控制3D打印机按照规划的轨迹进行运动。

走向CTO的路上... 2474

【PythonCode】力扣Leetcode26~30题Python版

力扣26-30

weixin_43790276的博客 2034

Steam崩溃:ntdll.dll报错0xc0000374...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值。

**My Coding Family** 1163

2024年游戏策划最新面试题及答案

1. **游戏策划**:负责游戏设计和开发的创意和技术过程。2. **主要职责**:设计游戏玩法、故事、角色、世界等。4. **游戏机制**:定义玩家如何与游戏世界互动的规则。13. **引人入胜的角色**:深入的背景故事、个性特征。3. **游戏平衡**:确保游戏公平、有趣且具有挑战性。7. **RPG特点**:角色发展、故事驱动、玩家选择。12. **关卡设计技巧**:挑战性、流动性、视觉引导。11. **游戏关卡设计**:创建游戏世界的不同阶段。5. **游戏循环**:玩家在游戏中重复的行为模式。

guo162308的博客 2322

【PythonCode】力扣Leetcode31~35题Python版

力扣31-35

weixin_43790276的博客 2104

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【PythonCode】力扣Leetcode6~10题Python版

Leetcode6-10

weixin_43790276的博客 1859

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【PythonCode】力扣Leetcode46~50题Python版

力扣46-50

weixin_43790276的博客 1684

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

【PythonCode】力扣Leetcode21~25题Python版

Leetcode20-25

weixin_43790276的博客 1633

力扣LeetCode:Python3代码解析 — 1.两数之和

力扣LeetCode:Python解题 — 1.两数之和两数之和解法一:双循环解法二:缓存数值结果对比 两数之和 难度:简单 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 解法一:双

Senimo 761

【PythonCode】力扣Leetcode36~40题Python版

力扣36-40

weixin_43790276的博客 1106

array python 交集_Python练手:一行Python解Leetcode习题

一行Python解Leetcode习题语法简单,提供大量开箱即用的工具是Python语言的一大特点,也是其受欢迎的重要特点。所谓“人生苦短,我用Python”,并不是说Python比其他语言性能好、也不是说Python比其它语言优秀,而是说它方便,易用,可用于思路验证、原型实现,也可用于快速开发;其开发效率高的特点使其的网络编程、爬虫和数据开发领域极受欢迎。知乎上甚至有专门的话题讨论一行Pytho...

weixin_39642998的博客 126

Python爬虫抓取LeetCode题解,获取力扣中国(leetcode-cn.com)提交代码,自动保存submission到本地,同步上传到github

力扣中国虽然可以和github绑定账号,但是我提交的题解并不能同步到github上…… 辛辛苦苦三个月,勤勤恳恳四百题,leetcode一片绿,github万里白。 手动上传是不可能手动上传的,这辈子也懒得手动上传。 找了一圈只能找到 Leetcode 的提交爬虫,没有力扣中国的,所以只能自己造轮子了。 学了两天爬虫鼓捣了这么个东西出来,我用的蛮顺手的,希望你们也能用的顺手。 项目地址:...

Keep Coding 5787

【PythonCode】力扣Leetcode16~20题Python版

Leetcode16-20

weixin_43790276的博客 1648
上一篇: 315道Python面试题,欢迎挑战
下一篇: Pandas进阶修炼,先来20道题热身再说!
菜鸟学Python
博客等级 码龄9年 8088粉丝 571原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值