LRU是Least Recently Used的缩写,即最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。...该算法赋予每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。...,那么我们也要将其移到最近使用的位置; 假设这时我们使用了('b','2'),那么当前元素就是我们最近使用过的了,队列就变为[('c',3),('b',2)],下次再添加一个新的元素的时候就是优先将('...c','3')移除了; 我们要保证删除和插入的时间复杂度为O(1),因此要使用字典,而且字典中的元素要是有序的,因此使用python自带的OrderedDict; 进一步的是,假设我们要自己实现底层,那么使用的结果就是...,最先访问的放在list的前面,最后访问的放在list的后面,故cache已满时,则删除list[0],然后插入新项; if key !
求连续子数组的和 def subarraySum(nums): preSum = [0 for _ in range(len(nums)+1)] for i in range(len(nums...] + nums[i] return preSum nums = [3,5,2,-2,4,1] res = subarraySum(nums) print(res) 接下来我们要求连续子数组的和只需要利用...:preSum[j+1]-preSum[i] leetcode 560 和为K的子数组 class Solution: def subarraySum(self, nums: List[int]...== k: res += 1 return res 优化:我直接记录下有几个sum[j]和sum[i]-k相等,直接更新结果,就避免了内层的...我们可以用哈希表,在记录前缀和的同时记录该前缀和出现的次数。
归并排序 def merge(le, ri): res = [] i = j = 0 while i < len(le) and j <...
错题集 一,max比较和列表推导式 注意当列表中的元素是字符串的时候,max和min比较时比较的是字符串,如下: list = ["1","49","30",'9','0'] print(min(list...)) print(max(list)) 虽然我希望能够输出0和49,但是比较的时候是根据字符串的比较规则,导致输出的是9和0 如果希望输出里面的最小数字和最大数字,我们可以先把它们转换成整型 如,解决下题...(min(list)) 二,栈 1,题1 这道题,值得注意的是:先往列表里面存入一个元素 class Solution: def isValid(self, s:str) -> bool:...", "Python"] print(" ".join(list1)) # 输出:"Hello world I am learning Python" 七,列表推导式-变向删除 当我希望删除列表中的素数元素...311, 431, 111, 141] ls = [num for num in ls if not is_prime(num)] print(ls) 八,shuffle函数打乱 shuffle函数是Python
239 滑动窗口的最大值 class Solution: def maxSlidingWindow(self, nums: List[int], k: int) -> List[int]:...下面是修改后的代码: from collections import deque class Solution: def maxSlidingWindow(self, nums: List[int...], k: int) -> List[int]: queue = deque() res = [] # 我们存储的是索引 for i in...if i >= k and i - k == queue[0]: queue.popleft() # 如果当前值比queue里面最后的值要大...queue.append(i) if i >= k-1: # queue中的首位保证是最大值 res.append
模板:找到每个元素后面第一个比它大的数,不存在时值为-1 def template(): stack = [] nums = [2,1,2,4,3] res = [-1 for...下一个更大元素 II 方法一:套用模板,额外的是对于最后一个元素,我们要将数组长度翻倍 class Solution: def nextGreaterElements(self, nums: List...stack.append(nums[i]) print(res) return res[:length] 方法二:利用循环数组技巧 以下代码让我们可以循环打印数组的值
前言:本文记录2024年3月11日至2024年3月19日牛客网所做的基础题目(错题本): 错题集 1,密码游戏 我写的: num = input() b = [] for i in num:...3,除法(/、//、%) 注意: 1,在python中两个整数相除/会保留小数部分(这点与C语言不同) 2,//代表的是整除(抛弃小数) x = int(input()) # 输入5 y = int...5,else和for的特殊交叉 一般来说,else和for属于不同的层次,但是: 它们在循环中也有特殊的交互。...在 for 循环中,else 子句可以用于指定循环正常结束时的代码块,即当循环没有被 break 语句中断时执行的代码。这被称为“else 子句”。...错题: 如下,判断new的元素在不在current里面: 思路:用for依次拿到new_users的每一个元素——再依次拿current_users的元素与之比较——当相等的时候会进入if,如果都不相等
前缀和主要适用的场景是原始数组不会被修改的情况下,频繁查询某个区间的累加和。 差分数组的主要适用场景是频繁对原始数组的某个区间的元素进行增减。...diff[i] = nums[i] - nums[i-1] return diff # 给闭区间[i,j]增加val # 原理很简单,回想diff数组反推nums数组的过程...diff[i] += 3意味着给nums[i..]所有的元素都加了 3,然后diff[j+1] -= 3又意味着对于nums[j+1..]所有元素再减 3,那综合起来,是不是就是对nums[i..j]中的所有元素都加...rdiff) 结果: [8, -3, 4, -3, -5] [8, 5, 9, 6, 1] [8, -3, 5, -3, -6] [8, 5, 10, 7, 1] 不妨去试试力扣第 1109 题「...labuladong的算法小抄
今天时间不太多,记一道遇到的面试题: 题目 给定一个 m x n 的字符矩阵和字符串 s,在矩阵中每次只能横向、纵向移动一步,不能超出矩阵范围,问:是否可以由矩阵中拼接出 s? ?...大致思路:用嵌套的列表来表示矩阵,首先遍历矩阵中的点,找到可以匹配字符串起点的点。 匹配到起点后,由该起点移动位置看能否完整匹配字符串 s,若可以、返回 True。...k"],["p","m","n"]]s = "ekabd"s2 = "kfg"print(judge(matrix,s))print(judge(matrix,s2)) 结论 第一次遇到深度优先搜索真题,...有些懵,算是挺失败的经历,上面的代码也只是简单通过了能想到的测试例子,还是存在漏洞的,之后如果刷到更完善的题目再进行优化。...不过感觉也还不错,之前的一系列练习也有效果,在有了深度优先搜索概念后也能独立完成了,就是时间花费的有些夸张,继续努力吧!
) windows = {i:0 for i in t} left, right = 0, 0 valid = 0 # 记录最小覆盖子串的起始位置以及长度
这里借用百度百科的一句话:并查集是一种树型的数据结构,用于处理一些不相交集合(disjoint sets)的合并及查询问题。常常在使用中以森林来表示。...每个群的size,也就是包含的节点数目就是1,self.size[0]=1。...("当前每一个群的节点个数:", unionF.size) 结果: 初始化每个节点的父节点: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 初始化的群个数: 10 判断3与8之间是否在一个群里面...:False 返回节点7的父节点3 当前每个节点的父节点: [3, 1, 8, 3, 4, 5, 6, 3, 8, 3] 当前群的个数: 6 当前每一个群的节点个数: [1, 1, 1, 4,...1, 1, 1, 1, 2, 1] 更具体的介绍可以去参考labuladong的算法小抄。
在这里,CSV文件的结构如下: 通过使用CSV模块的reader函数,我们可以方便地处理CSV文件,并将每一行数据转换为一个列表。然后可以使用列表的索引来获取特定的字段值。...比较转换后的用户答案user_answer.upper()和正确答案correct_answer.upper()是否相等。 返回比较结果的布尔值,表示用户的答案是否正确。...四、刷题程序主函数 1....代码 def main(): file_path = '单选题.csv' questions = load_questions(file_path) print('欢迎使用毛概刷题程序...如果用户的答案正确,使用print函数打印回答正确的提示信息,并将correct_answers加1。 如果用户的答案错误,使用print函数打印回答错误的提示信息,以及正确答案。
2+7=9,然后把这个hashmap里的key-value输出来。...if tmp>=-2**31 and tmp<=2**31-1: return tmp else: return 0 第七题...1、[::-1]的用法,其实就是把字符串倒过来。。。...>> x=-x >>> x 123 >>> str(x) '123' >>> b=str(x) >>> b '123' >>> b[::-1] '321' >>> 2、两个循环,第一个是求出所有数的倒序...,第二个循环是满足条件范围以后 输出值,不在范围return 0 总结:MLGB,传说中的leecode刷题有点东西啊,谁知道刷这东西能找到工作不,但是我想知道他是啥机制能判断出来我上传的代码对还是不对啊
结果: s1: [1, 2, 3] s2: [] 1 s1: [] s2: [3, 2, 1] s1: [] s2: [3, 2] s1: [4...
刷动态规划的第二天,有些自闭,刚靠着大魔王的歌缓过来了。关于动态规划,我还处于看题解时哦哦哦、看题目时???的阶段,所以整理的点不深。...除了昨天推给大家的链接,今天也是发现了一位刷题大牛的宝藏,不仅动态规划,各类算法都做了整理、引导,属实 respect !...具体的讲解我等之后理解加深有机会再展开,刷题阶段效率为主,今天记录经典的背包题目。 题目 「0-1背包问题描述」 现在有一个可装载重量为 W 的背包和 N 个物品,每个物品有重量和价值两个属性。...动态规划英文 dynamic programming,所以定义相关的状态数组多用 dp, 本题目中就是通过定义二维数组、在 Python 中即嵌套列表来实现。...感想 刷题刷到动态规划,很大的感受是我这刷题实施得太晚了,早几年就好了,之前对这些概念、算法完全没有意识。现在补过,只能说好过之后来补。
大家好,又见面了,我是你们的朋友全栈君。 虽然刷题一直饱受诟病,不过不可否认刷题确实能锻炼我们的编程能力,相信每个认真刷题的人都会有体会。...LeetCode收录了许多互联网公司的算法题目,被称为刷题神器,我虽然早有耳闻,不过却一直没有上面玩过。 ...支持多种主流语言:C/C++,Python, Java 可以在线进行测试,方便调试 笔者刷leetcode的主要目的 1、熟悉各互联网公司的算法题目,为找工作做准备。...因此刷题之外,还需要记住每种算法实现的时间复杂度和空间复杂度。最常用的是Big O notation。...用不同语言去解决同一个问题,可以让我们更好地去理解语言之间的差异,以及特定语言的优势。笔者会针对每题使用三种语言解决问题c++、java、python。
目录: 1,leetcode-200(岛屿的个数) 2,leetcode-36(有效的数独) 3,leetcode-146(LRU) 4,leetcode-10(正则表达式匹配) 5,leetcode-...64(最小路径和) 6,leetcode-322(零钱兑换) 7,leetcode-121(买卖股票的最佳时机) 8,leetcode-152(乘积最大子序列) 9,leetcode-120(三角形最小路径和...) 1,Number of Islands(岛屿的个数): 英文版:https://leetcode.com/problems/number-of-islands/description/ 中文版:https...if grid[nr][nc] == "1": self.dfs(grid, nr, nc) 2,Valid Sudoku(有效的数独...maximum-product-subarray/ 中文版:https://leetcode-cn.com/problems/maximum-product-subarray/ # leetcode-152:动态优化,与上题leetcode
,我们要返回左右边界的时候,当查找到该元素时,我们不能返回True或者Fasle,而是要不断的缩小边界。...if i == len(w): return True maxCap = maxCap - w[i] return False 该题代码还有点问题...,没有通过leetcode上的全部用例,掌握思想就好。...,如果要求最大值就用搜索右侧边界的二分。...labuladong的算法小抄
刷面试题是一种很好的感知职场需求、发现自身知识缺陷并不断提升自我的过程。...本专题通过收集、整理Python真实面试题,给大家讲解面试过程中对Python比较常见的考察点和备考点,希望能够引起读者的足够重视。 1....说说Python3 和 Python2 之间的区别? import方式:Py3是以绝对路径的方式进行import,Py2则是相对路径方式。 新老式类:Python中的类为多继承方式。...IPython:基于CPython的一个交互式解释器,只增强了CPython的交互性,其他不变。 PyPy:采用JIT技术,对Python代码进行动态编译,执行速度显著提升。...Jython:运行在Java平台上的解释器,把Python代码直接编译成Java字节码执行。 IronPython:运行在微软.NET平台上的解释器,把Python代码直接编译成.NET字节码执行。
一),二分法思想: 1,leetcode-69:Sqrt(x) (x 的平方根) 英文版:https://leetcode.com/problems/sqrtx/ 中文版:https://leetcode-cn.com...if s > x: r = res 2,leetcode-167:双指针 双指针主要用于数组,两个指针指向不同的元素
领取专属 10元无门槛券
手把手带您无忧上云