
算法
文章平均质量分 56
如何按一定的逻辑结构,把数据组织起来,并选择适当的存储表示方法把逻辑结构组织好的数据存储到计算机的存储器里
weixin_37540846
这个作者很懒,什么都没留下…
展开
-
直线上最多的点数
而是通过判断 x 和 y 与第三个点 p 形成的两条直线斜率是否相等,来得知点 p 是否落在该直线上。输入:points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]为避免除法精度问题,当我们枚举两个点 x 和 y 时,不直接计算其对应直线的 斜率和 截距。平行需要 4 个点来唯一确定,我们只有 3 个点,因此直接判定两条直线是否重合即可。一个朴素的做法是先枚举两点(确定一条线),然后检查其余点是否落在该线中。输入:points = [[1,1],[2,2],[3,3]]原创 2025-04-26 20:10:12 · 659 阅读 · 0 评论 -
【排列序列】
确定最高位数字后,剩余部分递归计算(注意此时返回的结果,是剩余数字的基数表示,需要做转换处理)。给出集合 [1,2,3,…,n],其所有元素共有 n!给定 n 和 k,返回第 k 个排列。输入:n = 3, k = 3。输入:n = 4, k = 9。输入:n = 3, k = 1。逐位确定数字,递归。原创 2025-04-26 19:33:39 · 131 阅读 · 0 评论 -
阿里巴巴找黄金宝箱(II)
从金币数量中选出一个数字集合,并销毁贴有这些数字的每个箱子,如果能销毁一半以上的箱子,则返回这个数字集合的最小大小。选择{6,8}集合时不可行的,它销毁后的结果数组为[1,1,1,1,3,3,3],新数组长度大于原数组的二分之一。选择集合{1,8},销毁后的结果数组为[3,3,3,6,6],长度为5,长度为原数组的一半,一个数字字串,数字之间使用都好分割,例如:6,6,6,6,3,3,3,1,1,5。大小为2的克星集合还有{1,3},{1,6},{3,6}。我们只能选择集合{2},销毁后的结果数组为空。原创 2025-04-19 19:24:08 · 245 阅读 · 0 评论 -
正则表达式匹配
给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 ‘.’ 和 ‘*’ 的正则表达式匹配。因此,字符串 “aa” 可被视为 ‘a’ 重复了一次。解释:因为 ‘*’ 代表可以匹配零个或多个前面的那一个元素, 在这里前。p 只包含从 a-z 的小写字母,以及字符 . 和 *。” 表示可匹配零个或多个(‘*’)任意字符(‘.’)。解释:“a” 无法匹配 “aa” 整个字符串。输入:s = “aa”, p = “a*”输入:s = “aa”, p = “a”输入:s = “ab”, p = “.原创 2025-04-19 20:18:24 · 189 阅读 · 0 评论 -
串联所有单词的字串
例如,如果 words = [“ab”,“cd”,“ef”], 那么 “abcdef”,“abefcd”,“cdabef”,“cdefab”,“efabcd”, 和 “efcdab” 都是串联子串。输入:s = “wordgoodgoodgoodbestword”, words = [“word”,“good”,“best”,“word”]输入:s = “barfoofoobarthefoobarman”, words = [“bar”,“foo”,“the”]子串 “foobar” 开始位置是 9。原创 2025-04-20 08:30:10 · 645 阅读 · 0 评论 -
破解保险箱
如果点 u 到点 v 之间有一条有向边 e,假设 e 携带的字符为 x,那么 u+x 的末尾 k−1 个字符形成的字符串等于 v,此时边 u+x 就表示了一个长度为 n 的密码。保险箱有一种特殊的密码校验方法,你可以随意输入密码序列,保险箱会自动记住 最后 n 位输入 ,如果匹配,则能够打开保险箱。个点,每个点都有 k 条出边,也有 k 条入边,因此,该有向图存在欧拉回路,欧拉回路所经过的路径拼接起来就是题目中的答案。密码是 n 位数, 密码的每一位都是范围 [0, k - 1] 中的一个数字。原创 2025-04-20 11:24:31 · 324 阅读 · 0 评论 -
【有效数字】
例如,下面的都是有效数字:“2”, “0089”, “-0.1”, “+3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e+7”, “+6e-1”, “53.5e93”, “-123.456e789”,而接下来的不是:“abc”, “1a”, “1e”, “e3”, “99e2.5”, “–6”, “-+3”, “95a54e53”。s 仅含英文字母(大写和小写),数字(0-9),加号 ‘+’ ,减号 ‘-’ ,或者点 ‘.’。输入:s = “0”输入:s = “e”原创 2025-04-20 10:51:28 · 386 阅读 · 0 评论 -
最长有效括号
给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。那么在遇见右括号时,push出来的i,和右括号下标j,j-i+1即为当前左右括号的距离。首先我们知道,右括号可以通过栈来匹配左括号(左括号push,遇见右括号就pop)此处注意一点,能够通过栈找到左括号的,那么这两个括号之间一定也是有效括号!那么我们需要判断的就是,是否会存在多个有效括号连接的情况(如"()()")解释:最长有效括号子串是 “()()”解释:最长有效括号子串是 “()”输入:s = “)()())”原创 2025-04-20 08:36:36 · 141 阅读 · 0 评论 -
通配符匹配
给你一个输入字符串 (s) 和一个字符模式 § ,请你实现一个支持 ‘?判定匹配成功的充要条件是:字符模式必须能够 完全匹配 输入字符串(而不是部分匹配)。’ 可以匹配 ‘c’, 但第二个 ‘a’ 无法匹配 ‘b’。解释:“a” 无法匹配 “aa” 整个字符串。p 仅由小写英文字母、‘?’ 或 ‘*’ 组成。输入:s = “cb”, p = “?输入:s = “aa”, p = “a”输入:s = “aa”, p = "’ 可以匹配任意字符串。s 仅由小写英文字母组成。f[i][j]代表s的1。原创 2025-04-20 08:45:27 · 405 阅读 · 0 评论 -
最大子数组和(leetCode:53)
给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。输入:nums = [-2,1,-3,4,-1,2,1,-5,4]解释:连续子数组 [4,-1,2,1] 的和最大,为 6。输入:nums = [5,4,-1,7,8]子数组 是数组中的一个连续部分。输入:nums = [1]原创 2023-04-10 17:18:22 · 39 阅读 · 1 评论 -
用 Rand7() 实现 Rand10()(LeetCode:470)
每个测试用例将有一个内部参数n,即你实现的函数 rand10() 在测试时将被调用的次数。请注意,这不是传递给 rand10() 的参数。给定方法 rand7 可生成 [1,7] 范围内的均匀随机整数,试写一个方法 rand10 生成 [1,10] 范围内的均匀随机整数。你只能调用 rand7() 且不能调用其他方法。请不要使用系统的 Math.random() 方法。rand7()调用次数的 期望值 是多少?你能否尽量少调用 rand7()?输出: [3,8,10]原创 2023-04-10 21:13:57 · 58 阅读 · 1 评论 -
连续出牌数量
游戏开始时玩家从手牌中选取一张卡牌打出,接下来如果玩家手中有和他上一次打出的授牌颜色或者数字相同的手牌,他可以继续讲该手牌打出,直至手牌灯光或者没有符合条件可以继续打出的手牌。输入为两行,第一行是每张手牌的数字,数字由空格分割,第二张为对应的每张手牌的颜色,用r y b g这4个字母分别代表4中颜色,字母也由空格分割。3、将取出的这种牌与其他牌进行比较,如果出现数字相同或者颜色相同的牌,就讲其取出,重复步骤3,直至遍历到最后一张牌也没有符合条件的为止(递归边界)输出一个数字,即最多能打出的手牌的数量。原创 2025-04-19 19:38:22 · 396 阅读 · 0 评论 -
内存资源分配
内存池资源包含:64k共2个、128k共1个、32k共4个、1k共128个的内存资源 针对50,36,64,128,127的内存申请序列,1、分配的内存要大于等于内存的申请量 存在满足需求的内存就必须分配 优先分配粒度小的,但内存不能拆分使用 2、需要按申请顺序分配。第二行为申请列表,申请的内存大小间用逗号分割,申请列表不大于100000 如 64:2,128:1,32:4,1:128。分配的内存依次是,64,64,128,null,null 第三次申请内存时已经将128分配出去,因此输出的结果是。原创 2025-04-19 19:25:55 · 541 阅读 · 0 评论 -
买卖股票的最佳时机(LeetCode:121)
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 =6)的时候卖出,最大利润 = 6-1 = 5。买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格;解释:在这种情况下, 没有交易完成, 所以最大利润为 0。输入:prices = [7,6,4,3,1]输入:[7,1,5,3,6,4]原创 2023-04-10 18:02:42 · 42 阅读 · 1 评论 -
合法重新排列数对
重新排列后的数组 [[2,1],[1,3],[3,2]] 和 [[3,2],[2,1],[1,3]] 都是合法的。输入:pairs = [[5,1],[4,5],[11,9],[9,4]]输入:pairs = [[1,3],[3,2],[2,1]]输入:pairs = [[1,2],[1,3],[2,1]]输出:[[11,9],[9,4],[4,5],[5,1]]注意:数据保证至少存在一个 pairs 的合法重新排列。输出:[[1,3],[3,2],[2,1]]输出:[[1,2],[2,1],[1,3]]原创 2025-04-20 11:32:03 · 348 阅读 · 0 评论