![](https://img-blog.csdnimg.cn/20190927151053287.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python(力扣)-刷题笔记
文章平均质量分 81
力扣python刷题
朗风风
这个作者很懒,什么都没留下…
展开
-
力扣刷题-python-哈希表(数组、set(集合)、map(dict字典))
1.哈希表(hash table)基础之前没有对哈希表做过系统性的学习,现在各部分主要内容截图下,方便以后自己翻阅查找。1)定义2)哈希函数3)哈希碰撞因为储存时候出现两个以上的数值映射到同一个位置上,就产生了哈希碰撞,不过哈希碰撞是可以解决的,可以用拉链法和线性试探法。拉链法线性探测法3)常见哈希结构数组set(集合)map(映射)前面两种经常用,后面这种没用过。py中的set为无序的不可重复的。2.数组作为哈希表(242、)242. 有效的字母异位词 - 力扣原创 2021-12-15 23:52:28 · 1426 阅读 · 0 评论 -
力扣刷题-python-双指针(数组、链表、字符串、N数之和)
1.双指针双指针用的太多了,但是双指针又不属于任何一个数据结构,所以单独拿一天来总结它。2.数组篇27. 移除元素 - 力扣(LeetCode) (leetcode-cn.com)快慢指针法class Solution: def removeElement(self, nums: List[int], val: int) -> int: slow=0 for fast in range(len(nums)): if nums[f原创 2021-12-17 18:56:49 · 200 阅读 · 0 评论 -
力扣刷题-python-字符串(反转、双指针、KMP)
1.字符串字符串就是字符串起来。。。2.反转系列344. 反转字符串 - 力扣(LeetCode) (leetcode-cn.com)class Solution: def reverseString(self, s: List[str]) -> None: """ Do not return anything, modify s in-place instead. """ left, right = 0, len(s)原创 2021-12-16 18:34:06 · 746 阅读 · 0 评论 -
力扣刷题-python-链表的操作(添加、删除、索引、交换、倒置)
1.链表的基础python 是没有链表的,需要通过类函数来构建链表。如下为力扣上链表定义class ListNode(object): def __init__(self, val=0, next=None): self.val = val self.next = next2.移除链表203. 移除链表元素 - 力扣(LeetCode) (leetcode-cn.com)下面这段精髓在于,开始加了一个虚拟节点,后面怎么操作是后面的事情,开头不会再变了,原创 2021-12-14 21:28:32 · 1530 阅读 · 0 评论 -
力扣刷题-python-单调栈(单调递减栈、单调递增栈)
文章目录1.单调栈2.单调递减栈3.单调递增栈4.总结1.单调栈通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,要用单调栈。2.单调递减栈单调递减栈,栈内只压缩右边比左边小的,单调递增相反。739. 每日温度 - 力扣(LeetCode) (leetcode-cn.com)这道题为单调递减栈,将索引压入到栈内,只要元素比栈顶的元素大,就弹出栈顶元素,并将栈顶元素的索引,计算与预计压入的索引差值,并将对应的值保存到栈顶元素索引的位置。class Solution原创 2021-12-29 22:11:32 · 1931 阅读 · 0 评论 -
力扣刷题-python-动态规划(完结)-3(股票买卖、数组或序列、编辑距离、回文子串)
121. 买卖股票的最佳时机 - 力扣(LeetCode) (leetcode-cn.com)可以用大小为2的dp数组,第一个表示买进最低价格获得收益,第二个表示卖出最高价格获得收益class Solution: def maxProfit(self, prices: List[int]) -> int: #dp[0] 为买入 价格负值的最大 买进最低价格 此时最大收益 #dp[1] 为卖出 价格正值的最大 卖出最高价格 此时最大收益原创 2021-12-29 16:48:56 · 444 阅读 · 0 评论 -
力扣刷题-python-动态规划-2 (完全背包、多重背包、打家劫舍、股票买卖)
文章目录1.完全背包题型2.多重背包问题3.背包问题总结4.打家劫舍问题5.买卖股票的最佳时期6.总结1.完全背包题型377. 组合总和 Ⅳ - 力扣(LeetCode) (leetcode-cn.com)物品可以重复取,说明为完全背包问题。完全背包问题,遍历背包时候需要从小到大。而且取出来物品是有顺序的,说明为排列问题,所以需要外层为背包,内层为物品class Solution: def combinationSum4(self, nums: List[int], target: int原创 2021-12-28 20:35:03 · 360 阅读 · 0 评论 -
力扣刷题-python-动态规划-1 (动态规划、01背包问题、完全背包问题)
文章目录1.动态规划2.简单和中等题3.01背包问题基础4.01背包问题5.完全背包6.总结1.动态规划动态规划 是由前一个状态推导出贪心算法 是直接取局部最优动态规划需要直到状态转移公式解题过程分为5步确定dp数组(dp table)以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组2.简单和中等题509. 斐波那契数 - 力扣(LeetCode) (leetcode-cn.com)其实也不用写dp数组,这道题就可以解出来,但是这道题还是用了动态规划的思原创 2021-12-27 22:32:45 · 608 阅读 · 0 评论 -
力扣刷题-python-贪心算法(完结)-2
文章目录1)435.五重叠区域2)763.划分字母区间3)56.合并区间4)738. 单调递增的数字5)714. 买卖股票的最佳时机含手续费6)968.监控二叉树7)总结1)435.五重叠区域435. 无重叠区间 - 力扣(LeetCode) (leetcode-cn.com)class Solution: def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int: intervals.sort原创 2021-12-26 16:09:26 · 317 阅读 · 0 评论 -
力扣刷题-python-贪心算法-1(贪心算法简介、题目)
1.贪心算法贪心算法是每一小步都选最优,从而导致结果最优贪心算法基本都是常识问题,并且和其他混合在一起。就想刚刚我做了一道题,做完之后,我满脸问号,我这是用了贪心?没感觉所以不用太多想贪心的问题,正常做就好。2.简单题目455. 分发饼干 - 力扣(LeetCode) (leetcode-cn.com)class Solution: def findContentChildren(self, g: List[int], s: List[int]) -> int:原创 2021-12-25 21:34:51 · 650 阅读 · 0 评论 -
力扣刷题-python-回溯算法(完结)-2(回溯算法三道困难题)
文章目录1)332.重新安排行程2)51.N皇后3)解数独4)总结1)332.重新安排行程332. 重新安排行程 - 力扣(LeetCode) (leetcode-cn.com)弄了半天,还看了解释,好歹是弄完了,但是速度有些慢。from collections import defaultdictclass Solution: def findItinerary(self, tickets: list[list[str]]) -> list[str]: ticket原创 2021-12-24 17:38:49 · 341 阅读 · 0 评论 -
力扣刷题-python-回溯算法-1(回溯算法模板、题型)
1.回溯算法回溯算法的本质就是穷举,最多再加上剪枝,剪掉一部分不必要的。关于排列组合的区别,组合无序,排列有序回溯算法解决问题都可以抽象为树形结构(N叉树),树的宽度代表集合的大小,树的深度代表递归的深度,树的高度是有限的,也就是递归是有终止条件的。2.回溯算法模板void backtracking(参数) : if (终止条件) : 存放结果 return for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)): 处理原创 2021-12-23 21:16:06 · 1004 阅读 · 0 评论 -
力扣刷题-python-二叉树-4(二叉搜索树、查找、插值、删除、修改)
1.验证二叉搜索树98. 验证二叉搜索树 - 力扣(LeetCode) (leetcode-cn.com)用了递归法和迭代法# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = right原创 2021-12-22 20:38:11 · 573 阅读 · 0 评论 -
力扣刷题-python-二叉树-3(递归法、迭代法、二叉树恢复、二叉搜索树)
1.平衡二叉树110. 平衡二叉树 - 力扣(LeetCode) (leetcode-cn.com)# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Soluti原创 2021-12-21 21:01:08 · 563 阅读 · 0 评论 -
力扣刷题-python-二叉树-2(层序遍历、混合遍历)
1. 二叉树层序遍历102. 二叉树的层序遍历 - 力扣(LeetCode) (leetcode-cn.com)# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass原创 2021-12-20 21:31:39 · 733 阅读 · 0 评论 -
力扣刷题-python-二叉树-1(三种遍历方法 递归、 迭代 、全模板)
1.二叉树二叉树分为满二叉树和完全二叉树1)满二叉树:如果一棵二叉树只有度为0的结点和度为2的结点,并且度为0的结点在同一层上,则这棵二叉树为满二叉树。度为0说明孩子节点为0,度为2说明孩子节点为2、这棵二叉树为满二叉树,也可以说深度为k,有2^k-1个节点的二叉树。2)完全二叉树完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2^h -1 个节点。3)原创 2021-12-19 21:50:50 · 1453 阅读 · 0 评论 -
力扣刷题-python-栈和队列(栈、队列)
1.栈和队列在python里面,栈和列表都可以用列表来模拟,都可以用append和pop栈 入是append() 出是pop()列表入是append() 出是pop(0)2.栈的经典题型3.队列的经典题型原创 2021-12-18 21:23:47 · 1377 阅读 · 0 评论