![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
leetcode
chandelierds
这个作者很懒,什么都没留下…
展开
-
力扣138. 复制带随机指针的链表
复制带随机指针的链表原创 2023-03-08 10:04:27 · 190 阅读 · 0 评论 -
力扣221. 最大正方形
最大正方形原创 2023-02-10 21:32:37 · 90 阅读 · 0 评论 -
力扣10. 正则表达式匹配
正则表达式匹配原创 2023-02-10 13:40:42 · 138 阅读 · 0 评论 -
二叉树的前序,中序,后序,层序遍历的递归和迭代
二叉树的前序遍历class TreeNode(): def __init__(self,x): self.val = x self.left = None self.right = Noneclass Solution(): #递归 def preorder_digui(self,root): res =...原创 2019-06-26 00:22:26 · 229 阅读 · 1 评论 -
32. 最长有效括号
最长有效括号原创 2023-02-08 19:25:28 · 61 阅读 · 0 评论 -
128. 最长连续序列
最长连续序列原创 2023-02-05 23:06:46 · 217 阅读 · 0 评论 -
338. 比特位计数
力扣338原创 2023-01-24 23:02:22 · 140 阅读 · 0 评论 -
394. 字符串解码
leetcode394原创 2023-01-24 17:46:56 · 64 阅读 · 0 评论 -
406. 根据身高重建队列
leetcode406原创 2023-01-23 23:15:12 · 53 阅读 · 0 评论 -
448. 找到所有数组中消失的数字
leetcode448原创 2023-01-22 19:59:50 · 69 阅读 · 0 评论 -
leetcode79. 单词搜索
回溯算法原创 2022-12-18 20:26:51 · 56 阅读 · 0 评论 -
leetcode70-爬楼梯
爬楼梯原创 2022-12-15 12:19:33 · 72 阅读 · 0 评论 -
leetcode4-两个有序数组的中位数
两个有序数组的中位数原创 2022-12-13 11:19:12 · 153 阅读 · 0 评论 -
leetcode42接雨水
力扣原创 2022-12-09 11:37:52 · 72 阅读 · 0 评论 -
力扣2-两数相加
参照官方解题方法/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val = val; } * ListNode(int val, ListNode next) { this.val = val; this.next = ne.原创 2021-08-29 16:50:44 · 84 阅读 · 0 评论 -
力扣5-最长回文子串
定义dp[i][j]的含义为i到j位置是否为回文子串,状态转移方程为:class Solution { public String longestPalindrome(String s) { int n = s.length(); String ans = ""; boolean[][] dp = new boolean[n][n]; //dp[i][j]表示从i到j是否为回文子串 for (int i = n-1; i >.原创 2021-08-29 16:48:31 · 100 阅读 · 0 评论 -
289. 生命游戏
思路:这题的关键在于不能一个一个的更新,每一个位置都要按照原来的周围环境进行更新,也可以理解为同时更新。用0作为界限来区分活细胞还是死细胞。一次遍历,特殊标记,再次遍历复原即可。特殊的点为:原来是活的,更新后死了,原来是死的,更新后活了。class Solution: def gameOfLife(self, board: List[List[int]]) -> None...原创 2020-04-03 22:58:34 · 108 阅读 · 0 评论 -
leetcode1111. 有效括号的嵌套深度
思路:参考解答区大神甜姨的解答题目最后 answer 的意思就是,为 0 的部分对应 seq 的括号是 A 字符串,为 1 的部分对应 seq 的括号是 B 字符串。示例 1:输入:seq = “(()())”输出:[0,1,1,1,1,0]answer 的意思是下面这个样子。红色部分是 A 串,蓝色部分是 B 串。示例 2:输入:seq = “()(())()”输出:[0...原创 2020-04-02 21:05:12 · 185 阅读 · 0 评论 -
leetcode98 验证二叉搜索树
思路一:对数中序遍历,检查得到的遍历是否为升序# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solut...原创 2020-03-26 23:24:50 · 226 阅读 · 0 评论 -
面试题 01.09. 字符串轮转
思路:首先两字符串长度 不一样肯定无法翻转。将字符串S1的翻转区域分为AB两部分,即S1=AB,那么翻转后的S2=BA,可以看出S2+S2=BABA显然其中含有AB,因此只要查询是否S1在S2+S2中即可。class Solution: def isFlipedString(self, s1: str, s2: str) -> bool: if len(s1)...原创 2020-03-24 22:59:57 · 164 阅读 · 0 评论 -
945. 使数组唯一的最小增量
思路:排序后,从第二位开始,如果小于等于前一位,就进行move+1,直到大于前一位。但时间复杂度过高。class Solution: def minIncrementForUnique(self, A: List[int]) -> int: if not A or len(A) == 1: return 0 A.sort()...原创 2020-03-22 23:58:37 · 117 阅读 · 0 评论 -
leetcode365:水壶问题与最大公因数,最小公倍数
思路:通过归纳,这题实际上是在求x和y的最大公因数是否能被z整除两数的最大公因数求法:辗转相除法大数模小数,余数不为0,则原来的小数变大数,余数变小数,直到余数为0,此时的小数即为最大公因数。(图中相同颜色的数表示是从上一个式子中拿来的)这里再引入最小公倍数的计算方法:两数之积/最大公因数则本题的完整代码为:class Solution: def canMeasureWate...原创 2020-03-21 15:46:52 · 804 阅读 · 0 评论 -
leetcode11- 盛最多水的容器
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。思路:法一:暴力法找出所有可能的组合中面积最大的,时间复杂度O(n^2),计算所有n(n−1)/2...原创 2019-04-22 22:15:59 · 192 阅读 · 1 评论 -
leetcod17:电话号码的字母组合
思路:本来用了permutation全排列,但发现题意并不是这样。看了大神们的思路,跪的很标准。class Solution(object): def letterCombinations(self, digits): """ :type digits: str :rtype: List[str] """ ...原创 2019-04-27 15:04:46 · 163 阅读 · 1 评论 -
leetcode18:四树之和
思路:leecode16是三数之和,这题可以借鉴,将四数之和转化为三数之和。class Solution(object): def fourSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[List[int]]...原创 2019-04-27 19:53:44 · 244 阅读 · 0 评论 -
leetcode19:删除链表的倒数第N个节点
剑指offer中删除节点和寻找倒数第K个节点的融合删除节点比较好做,用下一节点的值覆盖当前节点,再将当前节点的next指针指向下下个节点,即可完成当前节点的删除而寻找第k个节点则有不同的做法法一:快慢指针class Solution(object):def removeNthFromEnd(self, head, n):“”":type head: ListNode:type n:...原创 2019-04-27 21:07:41 · 210 阅读 · 1 评论 -
Leetcode8-字符串转换整数 (atoi)
字符串转换整数 (atoi)题目:你来实现一个 atoi 函数,使其能将字符串转换成整数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可...原创 2019-04-22 20:45:38 · 97 阅读 · 0 评论 -
leetcode24:两两交换链表中的节点
思路:递归,上三部曲模版:三部曲参见博客1、找终止条件。 什么情况下递归终止?没得交换的时候,递归就终止了呗。因此当链表只剩一个节点或者没有节点的时候,自然递归就终止了。2、找返回值。 我们希望向上一级递归返回什么信息?由于我们的目的是两两交换链表中相邻的节点,因此自然希望交换给上一级递归的是已经完成交换处理,即已经处理好的链表。3、本级递归应该做什么。 结合第二步,看下图!由于只考虑本级...原创 2019-04-27 22:43:40 · 111 阅读 · 0 评论 -
leecode15、16:三数之和、最接近的三数之和
给定一个包括 n 个整数的数组 nums 和 一个目标值 target。找出 nums 中的三个整数,使得它们的和与 target 最接近。返回这三个数的和。假定每组输入只存在唯一答案。例如,给定数组 nums = [-1,2,1,-4], 和 target = 1.与 target 最接近的三个数的和为 2. (-1 + 2 + 1 = 2).思路:先排序,然后双指针循环,每次循环都记录下...原创 2019-04-24 09:38:25 · 142 阅读 · 1 评论 -
leetcode29:两数相除
解题思路:这题是除法,所以先普及下除法术语商,公式是:(被除数-余数)÷除数=商,记作:被除数÷除数=商…余数,是一种数学术语。在一个除法算式里,被除数、余数、除数和商的关系为:(被除数-余数)÷除数=商,记作:被除数÷除数=商…余数,进而推导得出:商×除数+余数=被除数。要求商,我们首先想到的是减法,能被减多少次,那么商就为多少,但是明显减法的效率太低那么我们可以用位移法,因为计算机...原创 2019-04-28 22:07:06 · 346 阅读 · 0 评论 -
leetcode36:有效的数独
法一:暴力法,三种情况分别枚举class Solution(object): def isValidSudoku(self, board): """ :type board: List[List[str]] :rtype: bool """ for i in range(9): s1 ...原创 2019-04-29 22:16:25 · 137 阅读 · 0 评论 -
leetcode39、40:组合总和
leetcode39:组合总和思路:采用回溯法注意,回溯法是经常用到的算法,可以按照下面的模板来写class Solution: def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: candidates.sort() ...原创 2019-05-16 22:00:52 · 253 阅读 · 0 评论 -
leetcode43:字符串相乘
思路:显然,并不能进行return str(int(num1)*int(num2))这样的sao操作。可以模拟乘法的运算过程,即写竖式对于num1某下标i的数和num2下标为j的数,他们俩相乘的结果对乘积的i+j和i+j+1两个位置(从乘积的高位起为0),例子如下:从图中可以看出,num1第1位置的2和num2第0位置的4相乘为08.,影响最终结果的第1和第2位,则把结果累加到这两位即...原创 2019-05-17 14:31:05 · 202 阅读 · 0 评论 -
leetcode46、47:全排列
思路一:运用库函数进行sao操作(笔试可以,但面试的时候不要这么做)class Solution: def permute(self, nums: List[int]) -> List[List[int]]: import itertools if not nums: return [] if len(num...原创 2019-05-17 14:39:19 · 209 阅读 · 0 评论 -
leetcode48:旋转图像
如果可以用另一个辅助矩阵,那么解法就比较简单:class Solution: def rotate(self, matrix: List[List[int]]) -> None: h = matrix.copy() #辅助矩阵,浅拷贝 rows = len(matrix) cols = len(matrix[0]) ...原创 2019-05-17 16:52:11 · 139 阅读 · 0 评论 -
leetcod49:字母异位词分组
思路:利用字典,把每一个元素重新排序放入字典,出现过就放入对应的键里,没出现就新建一个键这里涉及到一键多值的用法,可以用set.setdefault()函数实现。class Solution: def groupAnagrams(self, strs: List[str]) -> List[List[str]]: h = {} for i in ...原创 2019-05-17 17:12:48 · 165 阅读 · 0 评论 -
leetcode50:Pow(x,n)
思路:折半法,初始化一个i,使他等于n的绝对值(因为n有正有负,先全部按正计算,负的最后取倒数就可以),对于i进行折半,如果折半值是2的倍数,就将x乘本身,如果不是2的倍数,就要将结果乘一个x后,再将x乘他本身class Solution: def myPow(self, x: float, n: int) -> float: res = 1 i...原创 2019-05-17 23:10:45 · 144 阅读 · 0 评论 -
leetcode72:编辑距离
题目:思路:使用动态规划,建立dp表,注意此类问题都要多加一行和一列,并且第一行和第一列都要先单独考虑,如下图所示。dp[i][j]表示word1的前i位转化到word2的前j位所需的最少步骤。第一行,是word1为空,变成word2最少步数,就是插入操作第一列,是word2为空,需要的最少步数,就是删除操作根据所列dp表的规律,可以发现:当word1[i] == word2[j]...原创 2019-05-30 15:59:31 · 187 阅读 · 0 评论 -
leetcde84:柱状图中最大的矩形
思路:使用单调栈这道题最好的做法是是使用单调栈,只要遍历一次就可求出最大面积。一、如何求最大矩形面积现在我们从头开始讲,如果要求只能遍历一次,那么如何求最大面积?我想到一个思路,那就是先把能完全包含各个柱状图的矩形的最大面积求出来,然后求出其中最大值即可。以例题来说就是能完全覆盖第0个柱子的最大矩形能完全覆盖第1个柱子的最大矩形能完全覆盖第2个柱子的最大矩形能完全覆盖第3...原创 2019-05-31 00:06:03 · 245 阅读 · 1 评论 -
leetcode21. 合并两个有序链表,23. 合并K个排序链表
文章目录题目思路一:暴力法代码实现复杂度分析思路二:分治代码题目思路一:暴力法遍历所有链表,将所有节点的值放到一个数组中。将这个数组排序,然后遍历所有元素得到正确顺序的值。用遍历得到的值,创建一个新的有序链表。代码实现 # Definition for singly-linked list. # class ListNode: # d...原创 2019-06-12 19:18:52 · 183 阅读 · 1 评论