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 · 134 阅读 · 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 · 357 阅读 · 0 评论 -
LeetCode 22.括号生成
LeetCode 22.括号生成数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。解题思路;DFS深度优先搜索树形结构(满二叉树)表示所有的结果括号可能;这是一个n=2的括号满足题目要求的结果是:["(())","()()"]观察所有的可能,可以发现 “)” 的个数 小于 "("的个数时,不满足条件;l , r 表示左括号和右括号的个数,每生成一个就减少一个;当l, r都变成0时,就把生成的括号添加到答案列表中;class Solutio原创 2022-02-15 00:52:18 · 174 阅读 · 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 · 598 阅读 · 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 · 199 阅读 · 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 · 175 阅读 · 0 评论 -
LeetCode 5. 最长回文子串
LeetCode 5. 最长回文子串题目难度:中等给你一个字符串 s,找到 s 中最长的回文子串。动态规划以示例1为例:s=‘babad’;i/j012340Tbababbabababad1Tababaabad2Tbabad3Tad4T思路:dp[i][j]表示s[ i : j+1 ]是否为回文子串;初始化dp[i][j]二维数组都初始化为false;s[i] != s[j] ,原创 2022-01-15 23:42:03 · 140 阅读 · 0 评论 -
LeetCode3.无重复字符的最长子串
LeetCode3.无重复字符的最长子串难度:中等给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。双指针思路;第一种情况,s只有一个元素或者空子串;设置双指针left、right,一个指向最左端,一个指向下一个元素;right向右移动cnt记录不重复字串长度;right向右移动,直到right指向的元素在s[left:right]中存在,找到改元素在窗口中的位置,并将left指向该元素的下一个元素;然后比较cnt 与 right - left的大小;如果下一个元原创 2022-01-15 00:30:25 · 199 阅读 · 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 · 248 阅读 · 0 评论