leecode
闲看庭前梦落花
摆脱不够努力、不够勤奋、不专注带来的焦虑
展开
-
Leecode刷题日记
第77题.组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。216.组合总和III找出所有相加之和为 n 的 k 个数的组合,且满足下列条件:只使用数字1到9每个数字 最多使用一次返回 所有可能的有效组合的列表。该列表不能包含相同的组合两次,组合可以以任何顺序返回17.电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。...原创 2022-08-27 23:23:45 · 270 阅读 · 0 评论 -
合并两个排序的链表
输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。递归class Solution(object): def mergeTwoLists(self, l1, l2): """ :type l1: ListNode :type l2: ListNode :rtype: ListNode """ if not l1: return l2 if原创 2022-04-12 19:04:20 · 199 阅读 · 0 评论 -
剑指 Offer 48. 最长不含重复字符的子字符串
请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ arr=[int(ord(i)) for i in s] res=0 temp=[] for i in原创 2022-04-11 09:59:01 · 47 阅读 · 0 评论 -
礼物的最大值
在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物? def maxValue(self, grid): """ :type grid: List[List[int]] :rtype: int """ for i in range(原创 2022-04-09 16:16:55 · 43 阅读 · 0 评论 -
连续子数组的最大和
输入一个整型数组,数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。class Solution(object): def maxSubArray(self, nums): """ :type nums: List[int] :rtype: int """ for i in range(1,len(nums)): nums[i]=max(nums[i原创 2022-04-09 16:01:57 · 50 阅读 · 0 评论 -
python树的子结构
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。class Solution(object): def isSubStructure(self, A, B): """ :type A: TreeNode :type B: TreeNode :rtype: bool """ def re(A,B):原创 2022-04-07 14:51:04 · 708 阅读 · 0 评论 -
python里面的切片[::-1] 和 reverse()函数区别
先说结论:切片[::-1] 有返回值, reverse()函数没有返回值原创 2022-04-06 18:53:37 · 792 阅读 · 0 评论 -
python冒泡排序
python冒泡排序冒泡排序冒泡排序class Solution(object): def minArray(self, numbers): """ :type numbers: List[int] :rtype: int """ for j in range(len(numbers)): for i in range(len(numbers)-j-1): if原创 2022-04-05 17:23:19 · 562 阅读 · 0 评论 -
不同二叉搜索树
不同二叉搜索树不同二叉搜索树不同二叉搜索树给你一个整数 n ,求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种?返回满足题意的二叉搜索树的种数。结题思路:假设n个节点存在二叉排序树的个数是G(n),1为根节点,2为根节点,…,n为根节点,当1为根节点时,其左子树节点个数为0,右子树节点个数为n-1,同理当2为根节点时,其左子树节点个数为1,右子树节点为n-2,所以可得G(n) = G(0)G(n-1)+G(1)(n-2)+…+G(n-1)*G(0) def num原创 2022-04-05 17:22:38 · 57 阅读 · 0 评论 -
动态规划-整数拆分
整数拆分整数拆分整数拆分给定一个正整数 n ,将其拆分为 k 个 正整数 的和( k >= 2 ),并使这些整数的乘积最大化。返回 你可以获得的最大乘积 。class Solution(object): def integerBreak(self, n): """ :type n: int :rtype: int """ dp=[0]*(n+1) dp[2]=1 for i原创 2022-04-01 20:31:50 · 459 阅读 · 0 评论 -
动态规划-爬楼梯
爬楼梯爬楼梯使用最小花费爬楼梯爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?class Solution(object): def climbStairs(self, n): """ :type n: int :rtype: int """ if n<3: return n dp=[0]*(n原创 2022-04-01 19:25:38 · 345 阅读 · 0 评论 -
斐波那契数列
斐波那契数列斐波那契数列斐波那契数列斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是:class Solution(object): def fib(self, n): """ :type n: int :rtype: int """ if n<2:return n dp=[0]*(n+1)原创 2022-04-01 17:38:42 · 334 阅读 · 0 评论 -
回溯算法-组合
回溯算法-组合组合组合回溯法三部曲递归函数的返回值及参数:在这里要定义两个全局变量,一个用来存放符合条件的单一结果,一个用来存放符合条件结果的集合。需要n和k两个参数还需要一个擦桉树为startindex,这个参数用来记录本层递归中集合从哪里开始。回溯函数终止条件:什么时候达到了叶子节点。path这个数组过到达了k单层搜索过程:回溯法的搜索过程就是一个树型结构的遍历过程,在如下图中,可以看出for循环用来横向遍历,递归的过程是纵向遍历。res=[]path=[]def backt原创 2022-04-01 16:20:09 · 158 阅读 · 0 评论 -
平衡二叉树
平衡二叉树平衡二叉树平衡二叉树给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1class Solution(object): def isBalanced(self, root): """ :type root: TreeNode :rtype: bool """ def m(root): if原创 2022-03-31 19:33:29 · 327 阅读 · 0 评论 -
二叉树的最大深度
二叉树的最大深度二叉树的最大深度二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。class Solution(object): def maxDepth(self, root): """ :type root: TreeNode :rtype: int """ if not root: retu原创 2022-03-31 19:18:51 · 297 阅读 · 0 评论 -
反转二叉树
反转二叉树前序遍历对称二叉树前序遍历class Solution: def invertTree(self, root: TreeNode) -> TreeNode: if not root: return None root.left, root.right = root.right, root.left #中 self.invertTree(root.left) #左 self.invertTree原创 2022-03-30 21:01:02 · 295 阅读 · 0 评论 -
二叉树的前中后序遍历
二叉树遍历前序遍历中序遍历后序遍历前序遍历 def preorderTraversal(self, root): """ :type root: TreeNode :rtype: List[int] """ arr=[] def pre(root): if not root: return arr.append(root.v原创 2022-03-30 20:40:52 · 549 阅读 · 0 评论 -
反转字符串
反转字符串反转字符串反转字符串给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。class Solution(object): def reverseStr(self, s, k): """ :type s: str :type k: int :rtype: str """ s=[i for i in s] def原创 2022-03-29 21:36:47 · 186 阅读 · 0 评论 -
有效的字母异位词
有效的字母异位词给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。重要代码: arr[ord(i)-ord(‘a’)]+=1 def isAnagram(self, s, t): """ :type s: str :type t: str :rtype: bool """ arr=[0]*26 for i in s: arr[ord原创 2022-03-29 20:27:31 · 174 阅读 · 0 评论 -
环形链表II
环形链表给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。不允许修改链表。快慢双指针,先看是否能够相遇。之后关键来了:相遇后,一个指针指向head,另一个不原创 2022-03-25 21:13:50 · 177 阅读 · 0 评论 -
删除链表的倒数第N个结点
删除链表的倒数第N个结点给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。建立一个虚拟头节点,建立两个游标,然后先让一个跑几步class Solution(object): def removeNthFromEnd(self, head, n): """ :type head: ListNode :type n: int :rtype: ListNode """ #虚拟头节点原创 2022-03-25 20:45:53 · 438 阅读 · 0 评论 -
反转链表。
反转链表给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。感觉也是首先加了一个None让head可以有地方指,然后按照前面的一直递换class Solution(object): def reverseList(self, head): """ :type head: ListNode :rtype: ListNode """ cur=head pre=None wh原创 2022-03-24 21:28:44 · 513 阅读 · 0 评论 -
移除链表元素
移除链表元素移除链表元素移除链表元素你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。首先添加一个虚拟头节点,然后在找一个游标对head进行遍历# Definition for singly-linked list.# class ListNode(object):# def __init__(self, val=0, next=None):# self.val = val#原创 2022-03-24 21:19:27 · 505 阅读 · 0 评论 -
leecode移除元素
移除元素给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] :type val: int :rtype: int """ left=right=0 wh原创 2022-03-15 21:38:02 · 63 阅读 · 0 评论 -
leecode二分查找
二分查找原创 2022-03-11 21:14:38 · 179 阅读 · 0 评论