算法
文章平均质量分 78
算法学习记录
晓宜
西北小镇做题家 兼 携程Javaer
阿里云专家博主 csdn优质创作者
博客收获4000+收藏,3000+点赞
简历‖面试‖毕设‖程序设计
展开
-
leetcode399.除法求值
当起点等于终点的时候,我们判断一下他们在不在图中,防止有两个不被输入的字符相除,如果他们在图中,记录此时的curVal到res中去,然后终止函数。创建一个hashMap 的数据结构,用来存储 a和b的关系以及他们的除法结果,同时记录b / a 的除法结果 1 / v。在递归的过程中,我们要讲curVal 更新为 curVal*nei.div 这是因为nei.str为我们搜索的尾节点,他当前的值curVal是他过去经历的边的乘积。原创 2024-04-09 08:15:00 · 825 阅读 · 0 评论 -
leetcode热题100.移动零
示例 1:示例 2:根据题意,我们可以直观的想到一种解法,即将所有非零的数字保存到一个数组中,然后我们将nums的前几位的值变为这个数组,后几位赋值0即可但是题目要求所有我们必须在不复制数组的情况下原地对数组进行操作,要求空间复杂度为O(1)O(1)O(1),我们可以采用双指针的思路标记两个指针为left,right,分别意味着0开始的点的下标和非0数组开始的下标一开始,如果当前数字不为0,我们就同时移动两个指针,否则,我们只移动右指针;当我们的右指针right的值再次遇到非0数字的时候,此时lef原创 2024-03-23 08:00:00 · 1052 阅读 · 0 评论 -
leetcode热题100.最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。示例 1:示例2:但是题目要求我们要时间复杂度 O(n)O(n)O(n),我们考虑另一种解法,对于去重的元素x,如果x-1不在去重后的集合中,说明他是一个增长链的起点,我们只需要计算这个链条的长度即可,最终保存最长的那一条上升链,那就是我们要找的答案。时间复杂度:空间复杂度:原创 2024-03-21 23:58:25 · 1045 阅读 · 0 评论 -
差分数组实战——滴滴春招笔试第一题
作者:晓宜🌈🌈🌈个人简介:互联网大厂Java准入职,阿里云专家博主,csdn后端优质创作者,算法爱好者🌙🌙🌙上周末参与了滴滴的春招笔试,第一题是差分数组的改版题,但是测试数据不强,听同学说暴力遍历也能过,whatever,这里分享下两种解法,顺便讲解下差分数组❤️❤️❤️你的关注是我前进的动力😊。原创 2024-03-18 18:05:45 · 1057 阅读 · 1 评论 -
腾讯春招后端一面(算法篇)
哈喽大家好,前段时间在小红书和牛客上发了面试的经验贴,很多同学留言问算法的具体解法,今天就详细写个帖子回复大家。因为csdn是写的比较详细,所以更新比较慢,大家见谅~~就题目而言,前两题是平时刷题常见的,第三题没有见过,需要认真思考下最后,希望找工作的同学都能收获心仪的offer。原创 2024-03-15 14:06:46 · 1423 阅读 · 0 评论 -
leetcode热题100. 字母异位词分组
给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的所有字母得到的一个新单词。示例 1:示例 2:示例 3:提示:1原创 2024-02-17 22:05:31 · 1194 阅读 · 0 评论 -
HJ108 求最小公倍数
42,所以这个最大公约数也是42与105的最大公约数(42=21×2)。在这个过程中,较大的数缩小了,所以继续进行同样的计算可以不断缩小这两个数直至余数为零。这时,所剩下的还没有变成零的数就是两数的最大公约数。正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数。注意本题要求是最大公倍数,根据数学定理,欲求252和105的最大公约数;输出A和B的最小公倍数。输入两个正整数A和B。原创 2024-02-17 16:00:00 · 1072 阅读 · 0 评论 -
牛客笔试-变换次数
直接模拟题目中的运算即可,开启一个循环,不断计算当前数字的每个位数的和,将最终结果赋值回num。变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2。牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。小于等于2,000,000,000。问题是,要做多少次变换,使得这个数变成个位数。循环结束的标志是num为个位数。输出一个整数,表示变换次数。原创 2024-02-16 08:30:00 · 439 阅读 · 0 评论 -
NOIP2003.加分二叉树
在递归函数中,如果出现r原创 2024-02-15 08:15:00 · 1951 阅读 · 0 评论 -
leetcode121. 买卖股票的最佳时机
给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。示例 1:输入:[7,1,5,3,6,4]输出:5解释:在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利润不能是 7-1 = 6,原创 2024-02-02 21:17:01 · 519 阅读 · 0 评论 -
leetcode热题100.二叉树中的最大路径和
二叉树中的 路径 被定义为一条节点序列,序列中每对相邻节点之间都存在一条边。同一个节点在一条路径序列中 至多出现一次 。该路径 至少包含一个 节点,且不一定经过根节点。路径和 是路径中各节点值的总和。给你一个二叉树的根节点 root ,返回其 最大路径和 。示例 1:输入:root = [1,2,3]输出:6解释:最优路径是 2 -> 1 -> 3 ,路径和为 2 + 1 + 3 = 6示例 2:输入:root = [-10,9,20,null,null,15,7]输出:42解释:最优路径是原创 2024-02-02 17:10:40 · 1159 阅读 · 0 评论 -
leetcode热题100.三数之和
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。请你返回所有和为 0 且不重复的三元组。注意:答案中不可以包含重复的三元组。示例 1:输入:nums = [-1,0,1,2,-1,-4]输出:[[-1,-1,2],[-1,0,1]]解释:nums[0] + nums[1] + nums[2] = (-1) + 0原创 2024-01-20 15:33:15 · 1159 阅读 · 0 评论 -
leetcode热题100. 二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出:3解释:节点 5 和节点 1 的最近公共祖先是节点 3 。示例 2:输入:root = [3,5,1,6,2,0,8,null,null原创 2024-01-19 16:15:01 · 964 阅读 · 0 评论 -
leetcode热题100.路径总和 III
给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。示例 1:输入:root = [10,5,-3,3,2,null,11,3,-2,null,1], targetSum = 8输出:3解释:和等于 8 的路径有 3 条,如图所示。示例 2:输入:root = [5,4,8,11,null,13,4,7,2,null,n原创 2024-01-17 23:54:41 · 1200 阅读 · 0 评论 -
leetcode2744. 最大字符串配对数目
给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配:字符串 words[i] 等于 words[j] 的反转字符串。0原创 2024-01-17 19:31:25 · 1050 阅读 · 0 评论 -
leetcode2376. 统计特殊整数
如果一个正整数每一个数位都是 互不相同 的,我们称它是 特殊整数 。给你一个 正 整数 n ,请你返回区间 [1, n] 之间特殊整数的数目。示例 1:输入:n = 20输出:19解释:1 到 20 之间所有整数除了 11 以外都是特殊整数。所以总共有 19 个特殊整数。示例 2:输入:n = 5输出:5解释:1 到 5 所有整数都是特殊整数。示例 3:输入:n = 135输出:110解释:从 1 到 135 总共有 110 个整数是特殊整数。不特殊的部分数字为:22 ,114 和 131原创 2024-01-16 22:06:13 · 641 阅读 · 0 评论 -
leetcode2719. 统计整数数目
给你两个数字字符串 num1 和 num2 ,以及两个整数 max_sum 和 min_sum 。如果一个整数 x 满足以下条件,我们称它是一个好整数:num1原创 2024-01-16 17:14:09 · 975 阅读 · 0 评论 -
leetcode82. 删除排序链表中的重复元素 II
否则说明这两个数一样,则这两个数需要去除,我们这里进一个while循环,不断推进cur.next的值,知道cur.next的值得不是最开始出现的那两个相同的数,如果他是none,则此时cur.next就是none,不需要额外操作,如果他是一个数字,且后面还有节点,则继续循环。遍历两次,第一次遍历的时候声明一个set集合,存储所有出现过多次的节点,在第二次遍历的时候使用双指针,cur指针在前,pre指针在后,如果发现cur指向的节点在集合中,则将cur向后移动,否则移动pre和cur节点。原创 2024-01-15 14:49:58 · 1020 阅读 · 0 评论 -
leetcode83. 删除排序链表中的重复元素
时间复杂度:空间复杂度:思路2复杂度时间复杂度:空间复杂度:原创 2024-01-14 08:33:01 · 927 阅读 · 0 评论 -
leetcode2807.在链表中插入最大公约数
时间复杂度:空间复杂度:原创 2024-01-06 17:08:01 · 478 阅读 · 0 评论 -
leetcode1944. 队列中可以看到的人数
示例 1:。时间复杂度:空间复杂度:原创 2024-01-05 08:00:00 · 1249 阅读 · 0 评论 -
leetcode2397. 被列覆盖的最多行数
我们在编写代码过程中,使用了二进制保存状态,row数组记录每一行的二进制,但需要注意的是,我们记录的是这一行对应的二进制数的对称的那个数,比如,011,我们记录为110,即6,因为我们最终只要统计出现的最大次数,所以记录形式并不影响最终结果。我们观察一下数据,n原创 2024-01-04 14:11:19 · 1005 阅读 · 0 评论 -
leetcode2487.从链表中移除节点
如果发现下一个节点大于栈顶元素,则一直弹出栈顶元素,直到栈为空,或者栈顶元素大于下一个节点。解释:每个节点的值都是 1 ,所以没有需要移除的节点。使用单调栈,保留从左到右单调递减的数组,赋值给节点。给定列表中的节点数目在范围 [1, 105] 内。输入:head = [5,2,13,3,8]解释:需要移除的节点是 5 ,2 和 3。输入:head = [1,1,1,1]返回修改后链表的头节点 head。给你一个链表的头节点 head。移除每个右侧有一个更大数值的节点。输出:[1,1,1,1]原创 2024-01-03 08:30:00 · 554 阅读 · 0 评论 -
leetcode2967. 使数组成为等数数组的最小代价
时间复杂度:空间复杂度:原创 2024-01-02 21:57:46 · 510 阅读 · 0 评论 -
leetcode2975. 移除栅栏得到的正方形田地的最大面积
[TOC]时间复杂度:空间复杂度:原创 2024-01-01 22:13:31 · 507 阅读 · 0 评论 -
用友Java后端笔试2023-8-5
小明最近在找工作,收到了许多面试邀约,可参加的面试由interviews 数组表示,其中 interviews[i] = [startTimei, endTimei, possibilityi],表示第 i 个面试在 startTimei 开始,endTimei 结束,面试成功的可能性是 possibilityi,该值越大,通过面试的可能性越大,由于精力限制,小明最多可以参加 k 场面试。对于这道题,我们先定义dp的状态,dp[i][j]为面对i这个时间段的面试,已经面试了j次,决策后的最大可能值。原创 2023-08-15 01:28:43 · 1135 阅读 · 0 评论 -
python实现停车场管理系统
停车场管理系统:若车辆到达,则显示汽车在停车场内或便道上的停车位置:若车辆离去,则显示汽车在停车场内停留的时间和应缴纳的费用,在便道停留不收费。(2)以栈模拟停车场,以队列模拟车场外的便道,按照从终端读入的输入数据序列进行模拟管理;(3)栈以顺序结构实现,队列以链表实现。原创 2023-01-28 10:38:18 · 4325 阅读 · 2 评论 -
蓝桥杯-带分数-python
题目描述100 可以表示为带分数的形式:100 = 3 + 69258 / 714还可以表示为:100 = 82 + 3546 / 197注意特征:带分数中,数字 1~9 分别出现且只出现一次(不包含 0 )。类似这样的带分数,100 有 11 种表示法。输入描述从标准输入读入一个正整数 N\ (N<1000 \times 1000)N (N<1000×1000)。输出描述程序输出该数字用数码 1~9 不重复不遗漏地组成带分数表示的全部种数。注意:不要求输出每原创 2022-01-25 11:15:14 · 1669 阅读 · 10 评论 -
蓝桥杯-火星人-python解法
题目描述人类终于登上了火星的土地并且见到了神秘的火星人。人类和火星人都无法理解对方的语言,但是我们的科学家发明了一种用数字交流的方法。这种交流方法是这样的,首先,火星人把一个非常大的数字告诉人类科学家,科学家破解这个数字的含义后,再把一个很小的数字加到这个大数上面,把结果告诉火星人,作为人类的回答。火星人用一种非常简单的方式来表示数字——掰手指。火星人只有一只手,但这只手上有成千上万的手指,这些手指排成一列,分别编号为1,2,3……1,2,3……。火星人的任意两根手指都能随意交换位置,他们就是通过.原创 2022-01-23 13:09:13 · 548 阅读 · 0 评论 -
输出函数f(a,b)=2×a2+b2的最小的100个函数值及相应的两个参数的值
最近朋友问了我一道题,看了网上各种思路后,决定用栈来实现它题目:设计程序按从大到小的次序依次输出函数f(a,b)=2×a2+b2的最小的100个函数值及相应的两个参数的值,其中a和b均为自然数。要求:(1)作为函数值的存储结构应尽可能节省空间。(2)所设计算法及整个程序的时间复杂度应尽可能小。思路:遍历每一个数result,找到符合2*a^2+b^2==result的a和b,下面代码中在0~50中找a和b,本题中可以缩小搜索范围,如果没找到,resul就加1,开始找下一轮。因为题原创 2021-12-14 10:20:23 · 1053 阅读 · 0 评论 -
蓝桥杯-完全二叉树的权值-python解法
题目描述给定一棵包含NN个节点的完全二叉树,树上每个节点都有一个权值,按从 上到下、从左到右的顺序依次是A_1, A_2, ··· A_NA1,A2,⋅⋅⋅AN,如下图所示:现在小明要把相同深度的节点的权值加在一起,他想知道哪个深度的节点 权值之和最大?如果有多个深度的权值和同为最大,请你输出其中最小的深度。注:根的深度是 1。输入描述第一行包含一个整数N(1 \leq N \leq 10^5)N(1≤N≤105)。第二行包含N个整数A_1, A_2...原创 2022-01-15 14:42:52 · 742 阅读 · 0 评论 -
蓝桥杯-跳石头-python
题目描述一年一度的"跳石头"比赛又要开始了!这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有NN块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走MM块岩石(不能移走起点和终点的岩石)。输入描述输入文件第一行包含三个整数L...原创 2022-02-01 12:02:44 · 1344 阅读 · 0 评论 -
蓝桥杯-灵能传输-python
感谢大佬的讲解:第十届蓝桥杯题目讲解(Java B组 IJ,C++ B组 BGH,C++/Java A组 CEHIJ)_哔哩哔哩_bilibili题目描述你控制着nn名高阶圣堂武士,方便起见标为1,2,··· ,n。每名高阶圣堂武士需要一定的灵能来战斗,每个人有一个灵能值a_iai表示其拥有的灵能的多少,a_iai非负表示这名高阶圣堂武士比在最佳状态下多余了ai点灵能,ai为负则表示这名高阶圣堂武士还需要 ai点灵能才能到达最佳战斗状态)。现在系统赋予了你的高阶圣...原创 2022-02-05 13:29:56 · 1307 阅读 · 2 评论 -
m计划-python
题目描述小明是个鹅卵石收藏者,从小到大他一共收藏了n块鹅卵石,编号分别为 ∼n,价值分别为 。a1,a2,⋯,an这天他乘船准备去往蓝桥王国,然而天有不测风云,小明所在的海域下起了暴雨。很快小明船上的积水越来越多,为了防止沉船,小明不得不选择若干块他收藏的鹅卵石丢弃。小明制定了一套名为m计划的选择方案,其内容如下:对于任意区间[i,i + m - 1][i,i+m−1]丢弃价值最小的鹅卵石i\in[1,n-m+1]i∈[1,n−m+1]。 对于一块鹅卵石,它在m计划中...原创 2022-02-05 02:46:03 · 7094 阅读 · 0 评论 -
蓝桥杯-奖学金-python
题目描述某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末,每个学生都有 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。任务:先根据输入的 3 门课的成绩计算总分,然后按上述规则排序,最后按排名顺序输出前 5 名学生的学号和总分。注意,在前 5 名同学中,每个人的奖学金都不相同,因此,你必须严格按上述规则排序原创 2022-01-26 17:45:01 · 1631 阅读 · 0 评论 -
蓝桥杯-三体攻击-python
三体人将对地球发起攻击。为了抵御攻击,地球人派出了 A × B × C 艘战舰,在太空中排成一个 A 层 B 行 C 列的立方体。其中,第 i 层第 j 行第 k 列的战舰(记为战舰 (i, j, k))的生命值为 d(i, j, k)。三体人将会对地球发起 m 轮“立方体攻击”,每次攻击会对一个小立方体中的所有战舰都造成相同的伤害。具体地,第 t 轮攻击用 7 个参数 lat, rat, lbt, rbt, lct, rct, ht 描述;所有满足 i ∈ [lat, rat],j ∈ [lbt, r原创 2022-02-06 23:34:50 · 288 阅读 · 0 评论 -
线段树-求最大值-python|c++
题目描述现在请求你维护一个数列,要求提供以下两种操作:1、 查询操作。语法:Q L功能:查询当前数列中末尾 LL 个数中的最大的数,并输出这个数的值。限制: L 不超过当前数列的长度。(L>0)2、 插入操作。语法:A n功能:将 n 加上 t,其中 t 是最近一次查询操作的答案(如果还未执行过查询操作,则 t=0),并将所得结果对一个固定的常数 D 取模,将所得答案插入到数列的末尾。限制:n 是整数(可能为负数)并且在长整范围内。注意:初始时数列是空的,没有一原创 2022-03-15 00:09:59 · 2570 阅读 · 0 评论 -
判断线段是否相交
感谢大佬的代码和讲解线段相交题目题目描述平面直角坐标系中有一条线段AB和一条线段CD ,求线段CD 和线段AB 的相交判断。输入描述第一行输入一个T,代表测试数据量每组测试数据输入有两行,每行两个实数坐标 (x,y) 分别代表 A,B,C,D 四个点。输出描述若AB与CD规范相交, 输出2。若AB与CD 不规范相交, 输出1。若AB与CD不相交, 输出0。输入输出样例示例 1...原创 2022-03-17 21:21:28 · 830 阅读 · 0 评论 -
线段树-区间求和修改-python
目录题目:输入描述输出描述输入输出样例运行限制思路区间和查询区间修改和懒惰标记我们下面介绍4个函数:注意树的存储空间代码题目:给定一个长度为N的数组a,其初值分别为a1,a2,...,aN。现有Q个操作,操作有以下两种:1 l r k,将区间 al,al+1,...ar的值加上k。 2 l r,求区间al,al+1,...,ar的和为多少。输入描述输入第1行包含两个正整数N,Q,分别表示数组...原创 2022-03-13 20:28:52 · 1702 阅读 · 1 评论 -
蓝桥杯-合根植物-python
问题描述w星球的一个种植园,被分成 m * n 个小格子(东西方向m行,南北方向n列)。每个格子里种了一株合根植物。这种植物有个特点,它的根可能会沿着南北或东西方向伸展,从而与另一个格子的植物合成为一体。如果我们告诉你哪些小格子间出现了连根现象,你能说出这个园中一共有多少株合根植物吗?输入格式第一行,两个整数m,n,用空格分开,表示格子的行数、列数(1<m,n<1000)。接下来一行,一个整数k,表示下面还有k行数据(0<k<100000)接下来k行,第行两个整数a,原创 2022-03-06 10:37:09 · 349 阅读 · 6 评论