笔试/LeetCode
文章平均质量分 59
LeetCode
"灼灼其华"
HELLO WORLD,HELLO FUTURE!
展开
-
华为机试题
# 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 Solution: def widthOfBinaryTree(self, root: TreeNo...原创 2021-06-18 19:09:45 · 210 阅读 · 0 评论 -
前缀和变量+字典
525. 连续数组原创 2021-06-04 17:54:23 · 124 阅读 · 0 评论 -
滑 动窗口
剑指 Offer 57 - II. 和为s的连续正数序列def findContinuousSequence(self, target: int) -> List[List[int]]: i = 1 # 滑动窗口的左边界 j = 1 # 滑动窗口的右边界 sum = 0 # 滑动窗口中数字的和 res = [] while i <= target // 2: if sum < target: # .原创 2021-05-17 10:43:12 · 123 阅读 · 0 评论 -
背包问题
背包问题的判定背包问题具备的特征:给定一个target,target可以是数字也可以是字符串,再给定一个数组nums,nums中装的可能是数字,也可能是字符串,问:能否使用nums中的元素做各种排列组合得到target。常见的背包问题有1、组合问题。组合问题公式dp[i] += dp[i-num]377. 组合总和 Ⅳclass Solution: def combinationSum4(self, nums: List[int], target: int) ->原创 2021-04-24 17:18:43 · 107 阅读 · 0 评论 -
二叉树习题
前序遍历# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution(object): def preorderTraversal原创 2021-04-16 17:35:41 · 136 阅读 · 0 评论 -
排序
a原创 2021-04-13 10:57:43 · 97 阅读 · 0 评论 -
链 表
面试题 02.03. 删除中间节点这题的核心思想其实就是把node的下一位的值覆盖给node,然后跳过node的下一位因为我们无法访问到head节点,所以除了直接从node开始往下找,其他都是不现实的即a->b->c->d->e->f 变为 a->b->d->d->e->f 然后把第一个d的next设为e,跳过第二个d# Definition for singly-linked list.class ListNode: d原创 2021-04-06 14:54:58 · 140 阅读 · 0 评论 -
双指针
26. 删除有序数组中的重复项class Solution: def removeDuplicates(self, nums: List[int]) -> int: slow = 0 for fast in range(len(nums)): if slow < 1 or nums[fast] != nums[slow-1]: nums[slow] = nums[fast]原创 2021-04-06 11:13:16 · 121 阅读 · 0 评论 -
二分
二分查找排序数组中的搜索问题,首先想到 二分法 解决。剑指 Offer 53 - II. 0~n-1中缺失的数字class Solution: def missingNumber(self, nums: List[int]) -> int: i, j = 0, len(nums) - 1 while i <= j: m = (i + j) // 2 if nums[m] == m: i = m原创 2021-03-31 15:38:05 · 121 阅读 · 0 评论 -
排列/组合(内置函数方法)
获取可重复的排列组合笛卡尔积:itertools.product(*iterables[, repeat])import itertools# 0~10,放回抽样组成2个数组的所有可能,1/11*1/11=1/121b = []for i in itertools.product(['0','1','2','3','4','5','6','7','8','9','10'], repeat = 2): b.append(','.join(i),)len(b)121排列:ite.原创 2021-03-25 11:29:03 · 211 阅读 · 0 评论 -
分治
对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做分治法。 递归法就是把问题转化为规模缩小了的同类问题的子问题。然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)。 简单的说:分治法就是把1个分为多个,递归法就是把多个归一的解决问题方法..原创 2021-03-24 15:02:31 · 116 阅读 · 1 评论 -
栈 / 队列
150. 逆波兰表达式求值class Solution: def evalRPN(self, tokens: List[str]) -> int: op_to_binary_fn = { "+": add, "-": sub, "*": mul, "/": lambda x, y: int(x / y), # 需要注意 python 中负数除法的表现与题目不一致 .原创 2021-03-21 20:51:33 · 96 阅读 · 0 评论 -
递归/迭代
剑指 Offer 10- I. 斐波那契数列笨办法示例(超时):class Solution: def fib(n: int) -> int: num = 0 if n==0: return 0 elif n == 1: return 1 else: num = num + Solution.fib(n-1) + Solution.fib(n-2原创 2021-03-23 19:16:14 · 152 阅读 · 0 评论 -
回溯、DFS、BFS
backtrack的公式:result = []def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择46. 全排列class Solution: def permute(self, nums: List[int]) -> .原创 2021-03-23 15:52:29 · 183 阅读 · 0 评论 -
动态 规划
70. 爬楼梯# 滚动数组p q r p q rp = qq = rclass Solution: def climbStairs(self, n: int) -> int: p = 0 q = 1 for i in range(n): r = p + q p = q q = r return ...原创 2021-03-22 17:09:49 · 194 阅读 · 0 评论 -
牛客 刷题
1、Python计算编辑距离编辑距离是用来比较两个字符串之间相似度的度量方法,表示的是两个字符串间相互转换所需要的最少步骤。分析:当两个字符串都为空串,那么编辑距离为0; 当其中一个字符串为空串时,那么编辑距离为另一个非空字符串的长度; 当两个字符串均为非空时(长度分别为 i 和 j ),取以下三种情况最小值即可: 1、长度分别为 i-1 和 j 的字符串的编辑距离已知,那么加1即可; 2、长度分别为 i 和 j-1 的字符串的编辑距离已知,那么加1即可; 3、长度分别为 i-1 和原创 2020-09-29 10:58:15 · 313 阅读 · 0 评论 -
2021-03-LeetCode-简单
1. 两数之和class Solution(object): def twoSum(self, nums, target): """ :type nums: List[int] :type target: int :rtype: List[int] """ result = [] for i in range(len(nums)): for j in rang原创 2021-03-17 21:01:52 · 162 阅读 · 0 评论 -
2021-03-LeetCode-中等
12. 整数转罗马数字class Solution: def execute(dic, a, num, result): sub = 2999 for i in a: if num>i and (num-i)<=sub: sub = num - i temp = i zheng = num//temp yu = num%temp.原创 2021-03-17 21:01:30 · 80 阅读 · 0 评论