LeetCode刷题- python篇
力扣刷题之旅
他是只猫
没有特别幸运,那么就请先特别努力,别因为懒惰而失败,还矫情地将原因归于自己倒霉。只有特别努力,才能显得毫不费力。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 31. 下一个排列
LeetCode 31. 下一个排列 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如,arr = [1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的 下一个排列 就是在这个有序容器中排在它后面的那个排列。如果不存在下一个更大的排列,那么这个数组必须重排为字典序最小的排列(即,其元原创 2022-02-15 19:49:26 · 188 阅读 · 0 评论 -
LeetCode56. 合并区间
LeetCode56. 合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。 第一种解法: class Solution: def merge(self, intervals: List[List[int]]) -> List[List[int]]: intervals.sort() pri原创 2022-01-21 19:45:34 · 418 阅读 · 0 评论 -
LeetCode 22.括号生成
LeetCode 22.括号生成 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。 解题思路; DFS深度优先搜索 树形结构(满二叉树)表示所有的结果括号可能;这是一个n=2的括号 满足题目要求的结果是:["(())","()()"] 观察所有的可能,可以发现 “)” 的个数 小于 "("的个数时,不满足条件; l , r 表示左括号和右括号的个数,每生成一个就减少一个; 当l, r都变成0时,就把生成的括号添加到答案列表中; class Solutio原创 2022-02-15 00:52:18 · 227 阅读 · 0 评论 -
LeetCode15. 三数之和 & 16. 最接近的三数之和
LeetCode15. 三数之和 给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有和为 0 且不重复的三元组。 注意:答案中不可以包含重复的三元组。 排序+双指针 思路: 首先对列表进行排序; 然后遍历列表; 如果num[i] >=0, 那后面将不再存在三数之和等于0了; 对于重复元素则跳过(题目要求不重复); 左指针l = i +1 ,右指针r = n - 1 ,l < r : loop;原创 2022-01-21 19:00:27 · 645 阅读 · 0 评论 -
LeetCode12. 整数转罗马数字
LeetCode12. 整数转罗马数字 贪心算法 贪心法则:我们每次尽量使用最大的数来表示。 字典: class Solution: def intToRoman(self, num: int) -> str: # 使用字典,从大到小记录所有的整数-罗马数字的键值对 dic = { 1000:'M', 900:'CM', 500:'D', 400:'CD', 100:'C'原创 2022-01-21 14:54:32 · 246 阅读 · 0 评论 -
LeetCode11. 盛最多水的容器
LeetCode11. 盛最多水的容器 给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 说明:你不能倾斜容器。 算法思路: 我们设置两个指针,一个指向起始位子,一个指向末尾柱子。那么面积s=min( h[i] , h[j] ) * ( j - i ); 指针向内移动,移动高板,面积肯定减少; 指针向内移动原创 2022-01-17 01:30:50 · 230 阅读 · 0 评论 -
LeetCode 5. 最长回文子串
LeetCode 5. 最长回文子串 题目难度:中等 给你一个字符串 s,找到 s 中最长的回文子串。 动态规划 以示例1为例:s=‘babad’; i/j 0 1 2 3 4 0 T ba bab baba babad 1 T ab aba abad 2 T ba bad 3 T ad 4 T 思路: dp[i][j]表示s[ i : j+1 ]是否为回文子串; 初始化dp[i][j]二维数组都初始化为false; s[i] != s[j] ,原创 2022-01-15 23:42:03 · 222 阅读 · 0 评论 -
LeetCode3.无重复字符的最长子串
LeetCode3.无重复字符的最长子串 难度:中等 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 双指针 思路; 第一种情况,s只有一个元素或者空子串; 设置双指针left、right,一个指向最左端,一个指向下一个元素; right向右移动cnt记录不重复字串长度; right向右移动,直到right指向的元素在s[left:right]中存在,找到改元素在窗口中的位置,并将left指向该元素的下一个元素; 然后比较cnt 与 right - left的大小; 如果下一个元原创 2022-01-15 00:30:25 · 270 阅读 · 0 评论 -
LeetCode-两数相加
LeetCode 2. 两数相加 题目难度:中等 题目分析: 链表反向存储数据,也就是第一位是个位; 1、l1为空或l2为空,返回另一个链表即可; 2、做加法运算时需要考虑进位,创建变量carry保存进位; 3、对链表进行遍历,直到其中一个链表遍历完全; 4、遍历结束,考虑进位; —直接和不为空的链表的后一项相加; —两个链表都遍历完成,则需要将进位添加到后面; # Definition for singly-linked list. # class ListNode: # def __ini原创 2022-01-13 13:40:03 · 322 阅读 · 0 评论
分享