随笔分类 - 力扣中国-每日一题
以后每天刷一道编程题。
摘要:# Definition for singly-linked list.# 这道题还是有点复杂的,但是是有套路的,套用反转链表的想法class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = nex
阅读全文
摘要:class Solution: # 实现基本计算器使用栈的数据结构,首先找出来数字,保存下来。 # 然后碰到运算符,+ , - 直接压入栈里边, # 碰到运算符 * 和 / 的情况下,说明前面已经有一个数值压入栈,并且 num 的值为运算符的后一个数字。 # 计算 * / 运算结果,并将计算后的结果
阅读全文
摘要:from typing import List# 338比特位计数,可以通过三种方法来做。# 第一种:暴力法,一边循环遍历,然后求出每个数字转化为二进制的1的个数。# 第二种:递归法,但是需要递归的过程中将结果记录下来,使用数组将每次计算的结果存起来。# 第三种方法和第二种类似,都是使用数组将之前算
阅读全文
摘要:from typing import List# 这道题我是用暴力的方法来做出来的,先统计出来如果老板不能够控制住自己的脾气,应该能够使多少位顾客满意。# 然后计算每一天应该有多少位顾客满意,写入到一个列表中去。# 使用滑动窗口的方法,计算每一个X天老板都控制住自己的脾气,找出最大值。class S
阅读全文
摘要:from typing import List# 这道题使用滑动窗口的方法来做的,定义一个长度为k的滑动窗口# 向右滑动,计算每次滑动窗口中数字的和,最后算出最大值。class Solution: def findMaxAverage(self, nums: List[int], k: int) -
阅读全文
摘要:# Definition for a binary tree node.'''搜索二叉树,是一个左子树小于根节点小于右子树的特殊二叉树。'''# 这道题使用递归的方法来做,有删除的节点有四种情况,# 1,是叶子节点。没有孩子。# 2,有一个左孩子。直接让左孩子即为就好了。# 3,有一个右孩子。 直接
阅读全文
摘要:from typing import List# 这道题本质上还是利用并查集的知识,首先计算最小的权重和,去除掉无效的边,# 然后遍历所有的边,然后计算最小的权重和,同时判断是否可以连通。# 并查集的模板。class DSU: def __init__(self,n): # 实例化一个列表。用来存放
阅读全文
摘要:# 力扣已经连续好几天的题目都是考察并查集的题,# 今天也不例外,是否为相似字符串组就表示一个组,也就是一个连通的区域# 这道题变向是考察一共有多少个连通区域。# 首先是并查集的魔板。class DSU: def __init__(self,n): # 初始化一个数组,初始每个节点都不联通。 sel
阅读全文
摘要:from typing import Listclass Solution: # 自己写的深搜,没办法通过,超时。 def minimumEffortPath1(self, heights: List[List[int]]) -> int: # 判断列表是否为空 if len(heights) ==
阅读全文
摘要:from typing import List# 方法:使用并查集的想法,有个人那就是有两个组合,然后挨着判断# 每个人的节点是否相连,是否相连后还有多余的连线。# 定义一个并查集类,稍微改变了一下。class UnionFind: def __init__(self,size): self.fat
阅读全文
摘要:from typing import Listclass Solution: # 错误的想法,刚开始想的是使用双指针的方法来计算左右两边的和, # 但是没有考虑到会有负数的存在,所有这个方法,行不通。 def pivotIndex1(self, nums: List[int]) -> int: if
阅读全文
摘要:from typing import List# 我们使用并查集来做这道题,一共N台电脑的话,至少需要n-1根线。# 并查集模板class UnionFind: def __init__(self): #记录每一个节点的父节点 self.size = 0 self.father = {} def f
阅读全文
摘要:from typing import List# 这道题是个简单的动态规划的题目。# 每天可以分为四种情况。# 1,不持有股票,买入,2,不持有股票,不买入。3,持有股票,不卖出,4,持有股票,卖出# 那我们就可以根据四种情况来列动态方程。class Solution: def maxProfit(
阅读全文
摘要:from typing import Listclass Solution: def validMountainArray(self, A: List[int]) -> bool: # 这道题我是我们需要分两段遍历,第一段从第一个到列表最大值, # 第二段从列表最大值,到列表最后一个。 # 定义指针
阅读全文
摘要:class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next# 这道题还是很简单的,我们只需要两遍的遍历,找到链表中倒数第n的前一个,# 然后把n的前一个节点的next指向n的下一个节点,就
阅读全文
摘要:# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = None# 这道题我们还是用双指针的办法,快指针f一次走两步,慢指针s一次走一步。# 如果两个指针相
阅读全文
摘要:# Definition for singly-linked list.class ListNode: def __init__(self, x): self.val = x self.next = None# 这道题我们用快慢指针的方式可以很容易的就写出来。# 定义两个指针,一个指针一次走一步,另
阅读全文
摘要:# 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 = rig
阅读全文
摘要:# Definition for a binary tree node.class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonefrom typing import List# 首先我
阅读全文
摘要:class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = Nonea = TreeNode(0)b = TreeNode(0)c = TreeNode(0)d = TreeNode(0)a.le
阅读全文

浙公网安备 33010602011771号