04 2020 档案

并查集
摘要:1 并查集实际上可以看做是一个有向图的树,除了根节点指向自己,其它的节点都是向上指,指向其父节点, class UnionFindSets: def __init__(self, M): self.tree_num = len(M) # 初始化树的节点数 self.tree_node_num = [ 阅读全文

posted @ 2020-04-28 17:59 吃我一枪 阅读(183) 评论(0) 推荐(0)

位运算题目
摘要:1 先利用异或运算对数组中的数求一遍,得到的结果是两个数的异或运算结果,再用与运算找到其第一个1的位置,利用该位置将数组中的元素分为两组,分别做异或运算,最后得到的即为只出现一次的两个数, 面试题56 - I. 数组中数字出现的次数 阅读全文

posted @ 2020-04-28 17:43 吃我一枪 阅读(116) 评论(0) 推荐(0)

随机采样题目
摘要:1 从随机生成7到随机生成10的关键是要做乘法,而不能做加法,做乘法时每个数生成的概率是相同的,先生成1到49的数,再对小于40的进行选择,这里实际上用的是7进制,第一次可以看做是选十位,第二次选个位,所以十位是从0到6,而不是从1到7, 还有一种方法是控制随机生成的a和b,b的范围是1到5,而a的 阅读全文

posted @ 2020-04-25 14:32 吃我一枪 阅读(145) 评论(0) 推荐(0)

单调栈题目
摘要:1 典型的单调栈问题,利用单调递减栈进行解决,从前和从后遍历都可以解决问题,从后遍历时,确定的是入栈元素的答案,从前遍历时,确定的是出栈元素的答案, 739. 每日温度 2 利用单调递减栈解决,关键是出栈时计算每个位置当前可以盛水的量,所以每次出栈后要保证栈不空,才可以计算盛水量,否则结束, 42. 阅读全文

posted @ 2020-04-24 10:33 吃我一枪 阅读(260) 评论(0) 推荐(0)

前缀和题目
摘要:1 前缀和题目常见于连续问题中,一定要注意初始条件的添加,否则会出错, class Solution: def subarraySum(self, nums: List[int], k: int) -> int: from collections import defaultdict l = len 阅读全文

posted @ 2020-04-22 14:26 吃我一枪 阅读(170) 评论(0) 推荐(0)

贪心题目
摘要:1 直接用bfs进行遍历,利用记忆数组记录 遍历过的位置,每个节点都要走一遍,比较费内存,不如直接记录最远可以到达的位置,空间复杂度O(1),时间O(N) 55. 跳跃游戏 2 和上一题有点类似,每次记录最远可以到达的位置,代码没写完, 45. 跳跃游戏 II 阅读全文

posted @ 2020-04-18 10:17 吃我一枪 阅读(142) 评论(0) 推荐(0)

堆排序
摘要:1 python默认是小顶堆,想要实现大顶堆入堆的时候要添加负号,出堆的时候也添加负号,求前 k 大,用小根堆,求前 k 小,用大根堆, python用heapq模块来实现小顶堆,它有六个函数,其中四个函数用的最多,一个是heapify()直接对数组进行堆化,两个是heappush() heappo 阅读全文

posted @ 2020-04-15 15:32 吃我一枪 阅读(162) 评论(0) 推荐(0)

python装饰器
摘要:1 写装饰器的框架 # 写函数装饰器的框架 # 传入被装饰函数, def func1(func): def func2(): # 执行装饰功能后,返回函数 # 而这里返回函数的用法就体现了闭包的思想,参数func对于func2是外部函数的变量, return func # 返回装饰函数 return 阅读全文

posted @ 2020-04-14 23:39 吃我一枪 阅读(136) 评论(0) 推荐(0)

状态机题目
摘要:1 先利用正则表达式画出状态转移图, 65. 有效数字 https://leetcode-cn.com/problems/valid-number/solution/xiang-xi-tong-su-de-si-lu-fen-xi-duo-jie-fa-by-1-4/ 2 是否持有股票是状态,而状态 阅读全文

posted @ 2020-04-13 20:52 吃我一枪 阅读(231) 评论(0) 推荐(0)

计算几何题目
摘要:1 对于直线问题,首先要选好解析方程,这里用参数方程最合适,因为参数t在0到1之间可以说明交点在线段中间, 面试题 16.03. 交点 阅读全文

posted @ 2020-04-12 22:43 吃我一枪 阅读(153) 评论(0) 推荐(0)

KMP算法
摘要:KMP算法的关键和难点是next数组的构建,next数组是由模式串生成的状态转移数组,next[i]表示当模式串needle[i]与主串的的不匹配时,需要跳到needle[next[i]]进行比较, class Solution: def strStr(self, haystack: str, ne 阅读全文

posted @ 2020-04-12 22:40 吃我一枪 阅读(199) 评论(0) 推荐(0)

并查集题目
摘要:1 可以直接用字典统计每个数出现的次数,再排序后由小到大统计每个数应该移动的次数,关键是要用一个标记来记录最后面的位置,时间复杂度O(N+klogk+k)=O(N+klogk),k是不同元素的个数,因为要排序,并查集还不会, 945. 使数组唯一的最小增量 2 两个思路,时间复杂度都是O(N),一个 阅读全文

posted @ 2020-04-11 11:35 吃我一枪 阅读(142) 评论(0) 推荐(0)

设计题目
摘要:1 先要读懂题意,类似于LRU,但又不一样,如果用双向链表解,必须要记录每个key的使用频率,即get和put的使用次数,如果使用次数相同,则删除时先删除最先put的,可以字典里面套有序字典来实现,有序字典记录key,外面字典的key为频率,有序字典可以方便的实现删除插入操作, 460. LFU缓存 阅读全文

posted @ 2020-04-10 15:46 吃我一枪 阅读(104) 评论(0) 推荐(0)

队列实现
摘要:1 python队列实现,使用队列的时候要用collections来实现,这样更方便,因为它有类似list的用法,而用deque模块实现的队列用的是get,put方法, # python3里面用queue模块 from queue import Queue q = Queue() q.put(3) 阅读全文

posted @ 2020-04-10 11:31 吃我一枪 阅读(138) 评论(0) 推荐(0)

字符串题目
摘要:1 可以用栈也可以用双端队列,用双端队列更方便些, 151. 翻转字符串里的单词 阅读全文

posted @ 2020-04-10 10:43 吃我一枪 阅读(102) 评论(0) 推荐(0)

int()函数
摘要:int()函数可将字符和数字取整,默认为十进制,如果是其它进制转十进制,这时要指定进制, x = int('111', 2) print(x) # 7 # 注意这里会溢出,int后的结果是错误的,所以大数取整的时候 # 最好用地板除实现,float会出错 k = 278675673186014706 阅读全文

posted @ 2020-04-09 22:15 吃我一枪 阅读(1252) 评论(0) 推荐(0)

博弈型动态规划
摘要:1 准确定义dp是最重要的,dp[i]表示先手在nums从i到n的最大值,则dp[i] = sum(i,n) - min(dp[i+1],dp[i+2],dp[i+3]),这个题在求dp[i]的时候,必须用sum减的计算方法,不能直接用利用最小值来求,同时要注意倒着求,本质上因为取的顺序与推理的顺序 阅读全文

posted @ 2020-04-09 21:41 吃我一枪 阅读(283) 评论(0) 推荐(0)

回溯题目
摘要:1 22. 括号生成 通过归纳可知,左括号剩余数只要大于0,就可以取一个,当右括号剩余数大于左括号剩余数时,才可以取右括号, 阅读全文

posted @ 2020-04-09 12:14 吃我一枪 阅读(137) 评论(0) 推荐(0)

导航