- 博客(84)
- 资源 (13)
- 收藏
- 关注
原创 2021-09-29:单词缩写,数字交换得到最大值,滚动字符串归类,插入结点,接雨水,距离为K的点
着重考虑边界情况:例如数字读完 index 应该等于 len(word)或者是num第一个是0或者是读到某一时候 index都必须是小于n的,大于n就return Falseclass Solution: def validWordAbbreviation(self, word: str, abbr: str) -> bool: index = 0 m = len(abbr) n = len(word) ...
2021-10-02 11:01:34
200
原创 9/26:记得重做。平衡二叉树,两数相除,minimum cost ticket[dp], top k frequency element
平衡二叉树专题 - 将二叉搜索树变平衡 - 力扣(LeetCode) (leetcode-cn.com)https://leetcode-cn.com/problems/balance-a-binary-search-tree/solution/ping-heng-er-cha-shu-zhuan-ti-by-fe-lucifer-4/# Definition for a binary tree node.# class TreeNode:# def __init__(se...
2021-09-30 11:27:34
164
原创 2021-09-23:连续子序列的和是某数的倍数,accounts merge邻接表graph, stack cpu function, 二叉树双向链表,二叉树迭代器,二分法最左为1,二叉树列排序
523. 连续子序列的和事某数的倍数class Solution: def checkSubarraySum(self, nums: List[int], k: int) -> bool: n = len(nums) if n<2: return False prefixsum = [0] for i in range(n): prefixsum.append(p...
2021-09-27 11:17:21
349
原创 2021-09-20:facebook 刷题 最近父节点链表环,字典序大小,向量和
"""# Definition for a Node.class Node: def __init__(self, val): self.val = val self.left = None self.right = None self.parent = None"""class Solution: def lowestCommonAncestor(self, p: 'Node', q: 'Node...
2021-09-24 04:58:43
195
原创 2021-09-20:除自己的乘积,random pick with weight,二叉树的直径,加法器 add string
class Solution: def productExceptSelf(self, nums: List[int]) -> List[int]: k = 1 n = len(nums) res = [1] * n for i in range(n): res[i] = k k = k*nums[i] k = 1 for i in...
2021-09-21 10:00:18
96
原创 2021-09-19:fb 科学计数器
计算器:class Solution: def calculate(self, s: str) -> int: stack = [] pre_op ='+' num = 0 for i, char in enumerate(s): if char.isdigit(): num = 10*num + int(char) if char...
2021-09-20 05:26:22
151
原创 fb面经: 最近父节点,括号,右看二叉树,merge k list,外星人字典,离原点最近的k个点, @lru_cache,自动缓存
最近父节点:# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = Noneclass Solution: def lowestCommonAncestor(self, root: 'TreeNode', p: 'TreeNode'..
2021-09-19 06:15:35
95
原创 9/17 fb刷题:二进制求和,二叉树验证,随机选择最大数,反转链表,回文字符,二分法,task schedule
二进制求和:class Solution: def addBinary(self, a: str, b: str) -> str: lengtha = len(a) lengthb = len(b) if lengtha > lengthb: b = (lengtha -lengthb)*'0'+b else: a = (lengthb - lengtha)*'0'+..
2021-09-18 08:44:28
141
转载 排序算法:sort color
快排:s= [6,7,5,4,3,2]def quicksort(l,r): i,j = l,r global s x= s[l] if(l<r): while(i<j): while(i<j and s[j]>=x): j -= 1 if(i<j): s[i] = s[j] i
2021-09-17 12:51:34
111
原创 经典题目,值得单独列出来,179最大数
我们分析一下规律:当 nums = [10,2]时,结果是 210。其实我们就是在比较 [10,2]这两个数字能组合成的 210 和 102 哪个数字更大,显然 210 更大,所以需要把 2 放在前面。为了避免用 int 型或者 long 型越界,所以我们需要把数字先转成字符串。然后可以把待比较的两个数字 x,y 组合成两个新的数字 string(x) + string(y) 和 string(y) + string(x) ,比较一下哪种组合构成的数字更大。答案是肯定的:首先拼接成...
2021-09-11 04:59:46
114
原创 Facebook题库刷题 9/11
1.class Solution: def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]: if not intervals: return [newInterval] flag = 0 ans = [] left = newInterval[0] ..
2021-09-11 04:15:27
256
1
原创 2021-08-24:二叉树 最大路径和
# 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 maxPathSum(self, root: Optional[...
2021-09-05 09:19:59
100
原创 2021-08-17:拓扑有向图,回溯dfs,差分数组,栈
拓扑有向图:class Solution: def minimumSemesters(self, n: int, relations: List[List[int]]) -> int: degree = [0]*n adjancy = [[] for _ in range(n)] for pre,cur in relations: adjancy[pre-1].append(cur-1)...
2021-08-21 04:30:27
211
原创 2021-08-14:字符串数组问题:
解题思路:1.hashmap: hashmap = defaultdict(int)2.循环字符串:把前后字符串拼在一起3.反转字符串 a = b [::-1]class Solution: def isAnagram(self, s: str, t: str) -> bool: dict1 = defaultdict(int) dict2 = defaultdict(int) for s1 in s: ...
2021-08-17 00:08:58
131
原创 2021-08-08:背包问题:
一篇文章吃透背包问题!(细致引入+解题模板+例题分析+代码呈现) - 分割等和子集 - 力扣(LeetCode) (leetcode-cn.com)常见的背包类型主要有以下几种:1、0/1背包问题:每个元素最多选取一次2、完全背包问题:每个元素可以重复选择3、组合背包问题:背包中的物品要考虑顺序4、分组背包问题:不止一个背包,需要遍历每个背包而每个背包问题要求的也是不同的,按照所求问题分类,又可以分为以下几种:1、最值问题:要求最大值/最小值2、存在问题:是否存在…………,满足………….
2021-08-14 10:09:05
231
原创 2021-08-05:动态规划2
class Solution: def findLongestChain(self, pairs: List[List[int]]) -> int: n = len(pairs) pairs.sort() dp = [1]*n for i in range(n): for j in range(i): if pairs[i][0] > pairs[j...
2021-08-08 10:38:25
128
原创 2021/7/20:动态规划
class Solution: def rob(self, nums: List[int]) -> int: n = len(nums) res = [([0]*2) for _ in range(n)] res[0][0] = 0 res[0][1] = nums[0] #0不偷,1偷 for i in range(1,n): res[i][0] = max(res[i-1...
2021-07-27 00:11:17
192
2
原创 2021-07-20:二叉树2
答案:# 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 findBottomLeftValue(self, roo...
2021-07-20 17:35:29
146
1
原创 2021-07-13:二叉树1
二叉树题目:# 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 maxDepth(self, root: Tre.
2021-07-19 23:59:34
196
1
原创 2021-07-11:链表题:160,206,21,83,19,24,445,234,725,328,
链表题注意的问题:考虑head为空,还有head.next为空的corner case保证用的变量循环的时候不能是空.next自己手写练习的时候多写corner case删除问题:如果会删除第一个节点,那么制造哑节点160思路,问题是,两个列表不等长。只需要双指针让他们遍历到同一位置上就行开始时让pa指向headA, pb指向headB当pa 指到None时,走过a步,下一步去headB当pb 指到None时,走过b步, 下一步去headA这样..
2021-07-13 12:38:41
95
1
原创 2021-07-10:位运算:461,136 遍历字典的方法268,260,190,342,693,476,371,338,318
按位与 & 按位或 | 异或 ^ 位运算:class Solution: def hammingDistance(self, x: int, y: int) -> int: n = x ^ y count = 0 while n!= 0 : n = n&(n-1) count += 1 return count...
2021-07-11 15:31:16
105
原创 2021-07-07:刷题:图785二分图,染色法,886,DFS课程表207,210,并查集判断有无环684
785二分图:染色法:思路,遍历图,如果是表格的话每个点会被遍历两遍。在第一遍里面,如果判断到此处color为0,还未上色的时候先涂色,然后用dfs去遍历它的临近点,如果临近点color也是0的话就继续涂色。遍历每个点第二次的时候再去确认是不是符合条件的。涂色和确认的条件都在dfs里面实现问题代码:class Solution: def isBipartite(self, graph: List[List[int]]) -> bool: N = len(
2021-07-10 11:10:18
136
原创 2021-07-05:每日5题:哈希表:1,217,594,128
1. two sum217:注意:hashmap = defaultdict(int) #初始值为0defaultdict(float) #初始值为0.0defaultdict(str) #初始值为“”class Solution: def containsDuplicate(self, nums: List[int]) -> bool: hashmap = defaultdict(int) for num in nums: ..
2021-07-07 01:16:44
92
原创 2021-07-03:每日5题day1
1. if hashmap.get(target-num) is not None:强调!! 看有没有key对应的值 is not None暴力破解:class Solution: def twoSum(self, nums: List[int], target: int) -> List[int]: ans = [] l = len(nums) for i in range(l):
2021-07-05 12:24:45
132
2
原创 2021-07-03: 课后总结
持续练习+精深练习(刻意练习)做过的题目不熟悉的要反复去练习和复习要去刻意练习自己不熟悉的算法和数据结构刷题建议面试的时候,沟通和交流很重要,探讨和交流一个问题,teamwork斐波拉契终极解法:mac切题四件套:例如126 triangle1.clarification: 数组范围,数据范围,2.possible solution brute force, recursion, DP3.coding4.tests如果在IDL.
2021-07-03 22:24:57
83
原创 2021-07-02:学完之后的总结1:背诵的算法模板,不熟悉的链表题,1721,24
Algorithms to live by . 算法用在生活中的法则priority queue 任务密度 = 重要程度kelly formula 凯利公式 赌博game theory 博弈论需要背诵的算法模板:遍历每一个map:从start开始,不停的去找儿子BFS:从start开始,把相邻的放在node数组里面,然后去遍历相邻的二分法:DP的模板:两步法:1.状态的定义2.状态的转移方程位运算:x & 1 ==...
2021-07-03 13:22:14
108
原创 2021-07-02:LC146:LRU,布隆过滤器
LRU cacheLFU:import collectionsd1 = collections.OrderedDict()OrderedDict使用dict时,key是无序的。在对dict做迭代时,我们无法确定Key的顺序。如果想要保持key的顺序,可以使用OrderedDict。OrderedDict的key会按照插入的顺序排列,不是key本身排序。OrderedDict.popitem()OrderedDict.popitem()有一个可选参数last(默.
2021-07-02 18:05:39
126
1
原创 2021-07-01:并查集,200岛屿问题,547朋友圈问题
并查集:并查集的初始化:自己的root先初始化为自己。如果需要合并ab, 则把b的老大指向a并查集优化1:需要多创建一个数据结构rank去查看深度将短链的root接在长链上,降低查找深度xRoot.rank yRoot.rank rank是一个变量,用来表示查找深度优化2:200. 岛屿问题:自己的解法1:DFS注意问题:如果发现回溯超过最大限制,一定是位置置0存在问题。1.调用函数: 函数名(变量) 一定是小括号2.岛屿...
2021-07-02 00:30:25
112
1
原创 动态规划,递增序列300,674,322零钱兑换,72word距离
674.class Solution: def findLengthOfLCIS(self, nums: List[int]) -> int: max_l = 1 l = 1 for i in range(1,len(nums)): if nums[i] <=nums[i-1]: l = 1 else: l += 1
2021-07-01 09:46:44
116
1
原创 动态规划,买卖股票的最佳机会,121,122,123,309,188.714,复习用栈和队列的转换
121:买卖1次:思路:记录时时刻刻的最小值,并且记录当前最大的profit,与最大profit进行比较。因为只能买卖一次,所以买的那天就是负收益,例如-7,-1。 但是卖的那天的价格就是正数。求差值最大。class Solution: def maxProfit(self, prices: List[int]) -> int: min_price = prices[0] profit = 0 for i in range(
2021-06-29 12:50:27
181
原创 2021-06-27:动态规划例题,70爬楼梯,120三角路径
动态规划例题:注意:在DFS遍历,贪心算法和动态规划里面考虑用哪种动态规划问题思路都是从下往上延申思考70.爬楼梯典型斐波拉契数列问题:解法1:用数组储存每个位置class Solution: def climbStairs(self, n: int) -> int: F = [] F.append(1) F.append(2) for i in range(2,n): .
2021-06-28 15:31:02
163
原创 2021-06-27:位运算,N皇后52,动态规划&贪心&回溯,字典Max函数用法
位运算两个重点:x & (x-1) : 打掉最后一位是1的位使之变成0 00101 -> 00100 01010 -> 01000x & -x : 取出最后一位是1 的位 例如: 00101 -> 00001 01010 -> 00010N皇后问题:52题:class Solution: def totalNQueens(self, n: int) -> int: self.c...
2021-06-27 21:55:19
201
1
原创 2021-04-23:为什么要学算法和结构,如何刷leetcode
python 数据结构与算法学习笔记day1:1.为什么要学算法和结构:区块链结构:最上层区块连成表每个区块是一个树 每个trasection(交易)就是一个叶子节点如何有效学习算法和结构一万个小时定律Chunk it up 切碎知识点知识体系分成小块 庖丁解牛数据结构:数据结构: 栈,队列,set, mapPriority queue 堆Trie 字母树Deliberate practicing 刻意练习枯...
2021-06-26 21:32:14
1062
2
原创 2021-06-20:二分查找,69,字典树,208,212,位运算,291,231,238
二分查找:1.单调递增或者递减2.存在上下界3.能够通过索引访问
2021-06-26 21:31:08
99
1
原创 2021-06-16: 22, 剪枝算法,N皇后问题,5152,数独,DFS回溯法3637
class Solution: def generateParenthesis(self, n: int) -> List[str]: self.ans = [] self._gen(0,0,n,"") return self.ans def _gen(self,left,right,n,result): if left == n and right == n : self.ans.ap...
2021-06-19 17:01:52
124
原创 2021-05-26:git的用法总结笔记
清除git clean -d -fxgit clone [url]git status 查看当前状态git status -s 简化显示修改状态git add . 添加修改的文件git checkout . 删除修改的文件=========================== git branchgit branch 列出当前分支清单git branch -a ...
2021-05-26 18:02:00
58
原创 2021-05-12:二叉树,二叉搜索树,98,235,236
主要内容:Tree, Binary Tree, Binary Search TreeGraphTree:Linked List 就是特殊化的 TreeTree 就是特殊化的 Graph二叉搜索树:二叉树的遍历: 这里看的是根的位置Pre-order 前序:根左右In-order 中序: 左根右Post-order 后序:左右根用递归解答顺序一般遍历是:深度优先,广度优先,以及搜索...
2021-05-26 17:15:25
69
原创 2021-05-07:set,hashmap,collisions, map 242 1 15 18
内容:1. HashTable, Hash Function, Collisions2.Map, Set3.HashMap, HashSet, TreeMap, TreeSet1. HashTable, Hash Function, Collisions把键,用Hash Function 得到一个Value, 然后将这个value 按照HashTable的大小,模上这个值,将value放在这个位置哈希冲突:Hash Collisions两个key的value相同,..
2021-05-12 00:47:31
102
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人