LeetCode
lanzhihui_
!
展开
-
LeetCode-【LRU算法】解题技巧
146. LRU 缓存请你设计并实现一个满足LRU (最近最少使用) 缓存约束的数据结构。正常解法,设计字典+双向链表实现,具体细节参考:力扣下面解法:利用python3中的字典本身就具有的性质:字典已经按照键添加的顺序进行排列,即字典按照添加key的顺序排列,实现如下:class LRUCache: def __init__(self, capacity: int): self.dict_ = {} self.cap = capacity...原创 2022-02-19 22:17:08 · 438 阅读 · 0 评论 -
LeetCode-【随机算法】解题技巧
384. 打乱数组class Solution: def __init__(self, nums: List[int]): self.data = nums[:] self.curr = nums self.len = len(nums) def reset(self) -> List[int]: self.curr = self.data[:] return self.curr def原创 2022-02-19 20:52:36 · 7131 阅读 · 0 评论 -
LeetCode-【topK】解题技巧
剑指 Offer II 059. 数据流的第 K 大数值class KthLargest: def __init__(self, k: int, nums: List[int]): self.k = k self.k_arr = [] for i in nums: heapq.heappush(self.k_arr,i) if len(self.k_arr) > self.k:原创 2021-12-26 21:08:11 · 3300 阅读 · 0 评论 -
LeetCode-【字符串】解题技巧
821. 字符的最短距离暴力解法:class Solution: def shortestToChar(self, s: str, c: str) -> List[int]: arr = [] for i,v in enumerate(s): if v == c: arr.append(i) ret = [] for i,v in enumerate(s):原创 2021-11-22 22:48:24 · 179 阅读 · 0 评论 -
LeetCode-【单调栈】解题技巧
402. 移掉 K 位数字正常算法思路:从左到右,找第一个比后面大的字符,删除,去掉前导清零,需要k次扫描,每扫描一次,得到移除一个数字后的解。贪心+k次扫描:class Solution: def removeKdigits(self, num: str, k: int) -> str: if len(num) == k: return "0" for i in range(k): t = ""原创 2021-10-03 14:56:41 · 180 阅读 · 0 评论 -
python_排序技巧
1.根据身高,体重,编号从小到大排序eg:编号:[1,2,3,4]身高:[100,90,110,100]体重:[30,35,50,30]输出:2 1 4 3def sort_student(h,w): dict_ = {} l = len(h) for i in range(l): t = (h[i],w[i]) dict_[t]=dict_.get(t,[])+[i] ret = [] for k in so原创 2021-09-30 23:25:30 · 416 阅读 · 0 评论 -
LeetCode-【双指针】解题技巧
986. 区间列表的交集https://leetcode-cn.com/problems/interval-list-intersections/class Solution: def intervalIntersection(self, firstList: List[List[int]], secondList: List[List[int]]) -> List[List[int]]: i,j=0,0 ans = [] while i&原创 2021-09-25 15:12:07 · 117 阅读 · 0 评论 -
LeetCode-【滑动窗口】解题技巧
1876. 长度为三且各字符不同的子字符串class Solution: def countGoodSubstrings(self, s: str) -> int: l = len(s) if l<=2: return 0 ans = 0 for i in range(2,l): if s[i-2] != s[i-1] and s[i-1] != s[i] and s[i原创 2021-09-20 17:13:23 · 361 阅读 · 0 评论 -
LeetCode-【差分解决区间问题】解题技巧
1094. 拼车此题关键在于:上车下车先后是固定的, 那么可以用差分法,在特定车站上车就+人数, 下车就-人数,那么计算, 如果出现 > capacity 就是false;1.所有车站人数初始化为0;2.遍历trips,依次维护上下车各车站人数变化;3.遍历所有车站,累加各个车站人数,出现> > capacity 就是false,否则返回true;class Solution(object): def carPooling(self, trips, capac原创 2021-06-13 21:14:43 · 2060 阅读 · 0 评论 -
LeetCode-【前缀和】解题技巧
560. 和为K的子数组1248. 统计「优美子数组」974. 和可被 K 整除的子数组523. 连续的子数组和原创 2021-02-16 20:59:07 · 394 阅读 · 0 评论 -
LeetCode-【二分查找】解题技巧
5489. 两球之间的磁力分析:题意求最大化最小,类似这样的求最大化最小值、最小化最大值等都可以用二分搜索解决.1.找到所有position的最大距离和最小距离;2.通过二分法,分别判断满足条件的距离(a.mid=(最大距离+最小距离)/2;b.满足条件的点是否>=m);下面是实现示例:class Solution(object): def check(self,p,mid,m): c = 0 i,j=0,1 while原创 2020-08-16 18:00:18 · 430 阅读 · 0 评论 -
LeetCode-【DFS】解题技巧
LeetCode题目:面试题 08.10. 颜色填充 def floodFill(self, image, sr, sc, newColor): """ :type image: List[List[int]] :type sr: int :type sc: int :type newColor: int...原创 2020-04-25 21:30:55 · 511 阅读 · 0 评论 -
LeetCode-【BFS】解题技巧
LeetCode题目:地图分析题目分析(分析转自sweetiee):这是一道典型的BFS基础应用,为什么这么说呢?因为我们只要先把所有的陆地都入队,然后从各个陆地同时开始一层一层的向海洋扩散,那么最后扩散到的海洋就是最远的海洋!并且这个海洋肯定是被离他最近的陆地给扩散到的!下面是扩散的图示,1表示陆地,0表示海洋。每次扩散的时候会标记相邻的4个位置的海洋:你可以想象成你从每个陆.........原创 2020-03-29 14:55:25 · 1972 阅读 · 0 评论 -
LeetCode-【链表】解题技巧
删除链表的节点 ListNode* deleteNode(ListNode* head, int val) { ListNode* dummy = new ListNode(0); //构建虚拟头节点 dummy->next = head; ListNode *t=dummy; while(t&&t-...原创 2020-03-15 18:35:45 · 424 阅读 · 1 评论 -
LeetCode-【数学】数学在解题中的技巧
1. 不使用变量交换两个数交换两个数# 异或a ^ b = cc ^ b = aa ^ c = bnumbers[0] ^= numbers[1];numbers[1] ^= numbers[0];numbers[0] ^= numbers[1];# 加减A = A+BB = A-BA = A-Bnumbers[1]=numbers[0]+numbers[1];...原创 2020-02-23 13:59:31 · 250 阅读 · 0 评论 -
LeetCode-【数学】判断素数
leetcode 204题目链接:计算质数厄拉多塞筛法def countPrimes(self, n): """ :type n: int :rtype: int """ if n < 2: return 0 res = 0 arr = [0] *...原创 2020-02-11 22:05:24 · 858 阅读 · 0 评论 -
LeetCode-【数学】解答技巧总结
leetcode 7题目链接:LeetCode7_反转整数int reverse(int x) { int r=0; while(x) { int t=r; r=r*10+x%10;//r从低位加到高位 if((x<10)&&(t!=(r-x%10)/10))//回退到加当前循环数之前,即t,看是否溢出 { return 0; } ...原创 2018-07-25 20:19:45 · 908 阅读 · 0 评论