面试 算法
_She001
这个作者很懒,什么都没留下…
展开
-
面试算法 牛客题目 BM50 两数之和
两数之和原创 2022-10-24 15:10:53 · 385 阅读 · 0 评论 -
面试算法 牛客题目 比较版本号
题目:比较版本号描述:描述牛客项目发布项目版本时会有版本号,比如1.02.11,2.14.4等等现在给你2个版本号version1和version2,请你比较他们的大小版本号是由修订号组成,修订号与修订号之间由一个"."连接。1个修订号可能有多位数字组成,修订号可能包含前导0,且是合法的。例如,1.02.11,0.1,0.2都是合法的版本号每个版本号至少包含1个修订号。修订号从左到右编号,下标从0开始,最左边的修订号下标为0,下一个修订号下标为1,以此类推。比较规则:一. 比较版本号原创 2022-10-12 18:20:11 · 1651 阅读 · 0 评论 -
面试算法 牛客题目 旋转数组的最小数字
描述:有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。原创 2022-10-12 02:34:10 · 421 阅读 · 0 评论 -
面试算法 牛客题目 数组中的逆序对
1.题目: 数组中的逆序对描描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007数据范围: 对于 50\%50% 的数据, size≤10 ^4对于 100\%100% 的数据, 10^5size≤10数组中所有数字的值满足 val≤10^9要求:空间复杂度O(n),时间复杂度 O(nlogn)原创 2022-10-10 15:14:39 · 703 阅读 · 0 评论 -
面试算法 牛客题目 寻找峰值
题目: 寻找峰值描述给定一个长度为n的数组nums,请你找到峰值并返回其索引。数组可能包含多个峰值,在这种情况下,返回任何一个所在位置即可。1.峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于2.假设 nums[-1] = nums[n] = -\infty?∞3.对于所有有效的 i 都有 nums[i] != nums[i + 1]4.你可以使用O(logN)的时间复杂度实现此问题吗?原创 2022-10-09 23:52:18 · 403 阅读 · 0 评论 -
面试算法 牛客题目 二维数组中的查找
题目: 二维数组中的查找描述在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。原创 2022-10-08 22:08:52 · 332 阅读 · 0 评论 -
面试算法 牛客题目 二分查找-(1)
题目: 二分查找-(1)描述请实现无重复数字的升序数组的二分查找给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,原创 2022-10-07 23:01:52 · 808 阅读 · 0 评论 -
面试算法 牛客题目 删除有序链表中重复的元素 (2)
.题目: 删除有序链表中重复的元素 (2)描述给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。例如:给出的链表为 1→2→3→3→4→4→5, 返回 1→2→5.给出的链表为 1→1→1→2→3, 返回 2→3.数据范围:链表长度 0 \le n \le 100000≤n≤10000,链表中的值满足 |val| \le 1000∣val∣≤1000要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)进阶:空间复杂度 O(1)O原创 2022-10-04 16:44:29 · 178 阅读 · 0 评论 -
面试算法 牛客题目 删除有序链表中重复的元素
题目: 删除有序链表中重复的元素描述删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 重点有序例如:给出的链表为1→1→2,返回1→2.给出的链表为1→1→2→3→3,返回1→2→3.数据范围:链表长度满足 1000≤n≤100,链表中任意节点的值满足 100∣val∣≤100进阶:空间复杂度 O(1),时间复杂度 O(n)原创 2022-10-04 00:27:42 · 387 阅读 · 0 评论 -
面试算法 牛客题目 链表的奇偶重排
题目: 链表的奇偶重排描述给定一个单链表,请设定一个函数,将链表的奇数位节点和偶数位节点分别放在一起,重排后输出。注意是节点的编号而非节点的数值。数据范围:节点数量满足 0 < n< 10^55节点中的值都满足 0原创 2022-10-03 01:33:57 · 1034 阅读 · 0 评论 -
面试算法 牛客题目 判断一个链表是否为回文结构
题目: 判断一个链表是否为回文结构描述给定一个链表,请判断该链表是否为回文结构。回文是指该字符串正序逆序完全一致。数据范围: 链表节点数 0 \le n \le 10^50≤n≤10链表中每个节点的值满足 |val| \le 10^7∣val∣≤10原创 2022-10-02 01:15:44 · 562 阅读 · 0 评论 -
面试算法 牛客题目 单链表的排序
1.题目: 单链表的排序描述给定一个节点数为n的无序单链表,对其按升序排序。数据范围:0 < n \le 1000000原创 2022-09-30 23:44:29 · 870 阅读 · 0 评论 -
面试算法 牛客题目 链表相加(二)
题目: 链表相加(二)输入描述:假设链表中每一个节点的值都在 0 - 9 之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。数据范围:0 \le n,m \le 10000000≤n,m≤1000000,链表任意值 0 \le val \le 90≤val≤9要求:空间复杂度 O(n)O(n),时间复杂度 O(n)O(n)原创 2022-09-29 15:58:38 · 554 阅读 · 0 评论 -
面试算法 牛客题目 两个链表的第一个公共结点
.题目: 两个链表的第一个公共结点描输入描述:输入分为是3段,第一段是第一个链表的非公共部分,第二段是第二个链表的非公共部分,第三段是第一个链表和第二个链表的公共部分。后台会将这3个参数组装为两个链表,并将这两个链表对应的头节点传入到函数FindFirstCommonNode里面,用户得到的输入只有pHead1和pHead2。返回值描述:返回传入的pHead1和pHead2的第一个公共结点,后台会打印以该节点为头节点的链表。原创 2022-09-28 23:49:35 · 111 阅读 · 0 评论 -
面试算法 牛客题目 删除链表的倒数第n个节点
题目: 删除链表的倒数第n个节点描述输描述给定一个链表,删除链表的倒数第 n 个节点并返回链表的头指针例如,给出的链表为: 1→2→3→4→5,n=2.删除了链表的倒数第 n 个节点之后,链表变为1→2→3→5.数据范围: 链表长度 10000≤n≤1000,链表中任意节点的值满足 0≤val≤100要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)备注:题目保证 nn 一定是有效的原创 2022-09-27 15:29:00 · 227 阅读 · 0 评论 -
面试算法 牛客题目 链表中倒数最后k个结点
题目: 链表中倒数最后k个结点描述输入一个长度为 n 的链表,设链表中的元素的值为 ai ,返回该链表中倒数第k个节点。如果该链表长度小于k,请返回一个长度为 0 的链表。原创 2022-09-26 15:44:46 · 327 阅读 · 0 评论 -
面试算法 牛客题目 链表中环的入口结点
牛客题目 链表中环的入口结点原创 2022-09-25 23:51:13 · 214 阅读 · 0 评论 -
面试算法 牛客题目 合并k个已排序的链表 (利用 vector 动态数组)
题目:合并k个已排序的链表描述合并 k 个升序的链表并将结果作为一个升序的链表返回其头节点。数据范围:节点总数 0 \le n \le 50000≤n≤5000,每个节点的val满足 |val|原创 2022-09-24 00:02:45 · 269 阅读 · 0 评论 -
面试算法 牛客题目 合并两个排序的链表
1.题目:合并两个排序的链表描述输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围: 0 \le n \le 10000≤n≤1000,-1000 \le 节点值 \le 1000?1000≤节点值≤1000要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)如输入{1,3,5},{2,4,6}时,合并后的链表为{1,2,3,4,5,6},所以对应的输出为{1,2,3,4,5,6},原创 2022-09-21 12:42:16 · 466 阅读 · 0 评论 -
面试算法 牛客题目 链表中的节点每k个一组翻转
题目:BM3 链表中的节点每k个一组翻转描述将给出的链表中的节点每 k 个一组翻转,返回翻转后的链表如果链表中的节点数不是 k 的倍数,将最后剩下的节点保持原样你不能更改节点中的值,只能更改节点本身。原创 2022-09-20 16:30:01 · 169 阅读 · 0 评论 -
面试算法 牛客题目 链表内指定区间反转
牛客题目 链表内指定区间反转原创 2022-09-19 19:34:12 · 117 阅读 · 0 评论 -
面试算法 优势洗牌 算法: 贪心
题目:优势洗牌给定两个大小相等的数组A和B,A相对于B的优势可以用满足A[i]>B[i]的索引i的数目来描述。返回A的任意排列,使其相对于B的优势最大化。(相同的案例 田忌赛马)2.算法贪心算法原创 2022-09-08 19:30:18 · 202 阅读 · 0 评论 -
面试算法 Dota2参议院 算法:贪心
1.题目:Dota2参议院Dota2的世界里有两个阵营:Radiant(天辉)和Dire(夜魇)Dota2参议院由来自两派的参议员组成。现在参议院希望对一个 Dota2游戏里的改变作出决定。他们以一个基于轮为过程的投票进行。在每一轮中,每一位参议员都可以行使两项权利中的一项:禁止一名参议员的权利:参议员可以让另一位参议员在这一轮和随后的几轮中丧失所有的权利。宣布胜利:如果参议员发现有权利投票的参议员都是同一个阵营的,他可以宣布胜利并给定一个字符串代表每个参议员的阵营。字母“R算法:贪心原创 2022-09-08 12:41:27 · 241 阅读 · 0 评论 -
面试算法 打家劫舍 (3) 加强加强版 算法: 递归+ dfs+ 动态规划
.题目:打家劫舍 (3) 加强加强版在上次打劫完一条街道之后和一圈房屋后,小偷又发现了一个新的可行窃的地区。这个地区只有一个入口,我们称之为“根”。除了“根”之外,每栋房子有且只有一个“父“房子与之相连。一番侦察之后,聪明的小偷意识到“这个地方的所有房屋的排列类似于一棵二叉树”。如果两个直接相连的房子在同一天晚上被打劫,房屋将自动报警。计算在不触动警报的情况下,小偷一晚能够盗取的最高金额。2.算法:1.递归+ dfs + 动态规划原创 2022-09-07 23:19:53 · 139 阅读 · 0 评论 -
面试算法 打家劫舍(2) 加强版 算法:迭代动态规划
打家劫舍(2) 加强版你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。 加的条件 (开始的房间 与结束的 房间 相邻 , 形象比喻为循环链表, 排成一个圆)输入:[1,2,3,1] 输出:4输入:[2,7,9,3,1] 输出:11原创 2022-09-07 15:59:38 · 207 阅读 · 0 评论 -
面试算法 打家劫舍 (1) 算法:递归,迭代动态规划
1.题目:打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。输入:[1,2,3,1] 输出:4输入:[2,7,9,3,1] 输出:122.算法:1.递归2.迭代的动态规划3.空间复杂度 缩小的迭代动态规划原创 2022-09-07 13:26:08 · 363 阅读 · 0 评论 -
面试算法 字符串匹配 算法:暴力算法,哈希算法 , KMP 算法
字符串匹配 算法:暴力算法,哈希算法 , KMP 算法原创 2022-09-06 19:13:55 · 273 阅读 · 0 评论 -
面试算法 井字游戏 算法:暴力算法
1.题目:井字游戏用字符串数组作为井字游戏的游戏板board,判断该游戏板有没有可能最终形成.游戏板是一个3 x 3 数组,由字符"","X"和"O"组成。字符""代表一个空位。两个玩家轮流将字符放入空位,一个玩家执X棋,另一个玩家执O棋“X”和“O”只允许放置在空位中,不允许对已放有字符的位置进行填充。当有3个相同(且非空)的字符填充任何行、列或对角线时,游戏结束,board生成.题目意思:就是看有没有人,成功的三个棋子连了一根线2.算法:暴力算法原创 2022-09-05 13:14:00 · 874 阅读 · 0 评论 -
面试算法 香槟塔 ,算法:暴力算法
1.题目:香槟塔把玻璃杯摆成金字塔的形状,其中第一层有1个玻璃杯,第二层有2个,依次类推到第100层。从顶层的第一个玻璃杯开始倾倒一些香槟,当顶层的杯子满了,任何溢出的香槟都会立刻等流量的流向左右两侧的玻璃杯。当左右两边的杯子也满了,就会等流量的流向它们左右两边的杯子,依次类推。(当最底层的玻璃杯满了,香槟会流到地板上)例如,在倾倒一杯香槟后,最顶层的玻璃杯满了。倾倒了两杯香槟后,第二层的两个玻璃杯各自盛放一半的香槟。在倒三杯香槟后,第二层的香槟满了–此时总共有三个满的玻璃杯。在倒第四杯后,第三层原创 2022-09-05 12:45:16 · 209 阅读 · 0 评论 -
面试算法 预测赢家 ,算法:递归,DP 动态规划
1.题目:预测赢家给定一个表示分数的非负整数数组。玩家1从数组任意一端拿取一个分数,随后玩家2继续从剩余数组任意一端拿取分数,然后玩家1拿,……。每次一个玩家只能拿取一个分数,分数被拿取之后不再可取。直到没有剩余分数可取时游戏结束。最终获得分数总和最多的玩家获胜。给定一个表示分数的数组,预测玩家1是否会成为赢家。你可以假设每个玩家的玩法都会使他的分数最大化。2.算法:1.递归2.思想优化的递归3.DP 动态规划原创 2022-09-04 15:17:51 · 257 阅读 · 0 评论 -
面试算法 题目:省份数量,算法:DFS,BFS,并查集
1.题目:省份数量有n个城市,其中一些彼此相连,另一些没有相连。如果城市a与城市b直接相连,且城市b与城市c直接相连,那么城市a与城市c间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。.给你一个nx n的矩阵isConnected,其中isConnected[i]li] =1表示第i个城市和第j个城市直接相连,而isConnected[i]l]=0表示二者不直接相连。返回矩阵中省份的数量。2.算法:1.DFS2.BFS3.并查集原创 2022-09-03 14:23:30 · 382 阅读 · 1 评论 -
面试算法 二叉树的遍历,方法 :线索二叉树 ( morris ) ,前序遍历: 中序遍历: 后序遍历
题目:二叉树遍历前序遍历:根左右中序遍历:左根右后序遍历:左右根层序遍历:从上往下、从左往右算法: morris遍历原创 2022-09-02 15:38:49 · 367 阅读 · 0 评论 -
面试算法 二叉树的遍历,方法 :迭代 ,前序遍历: 中序遍历: 后序遍历: 层序遍历
题目:二叉树遍历前序遍历:根左右中序遍历:左根右后序遍历:左右根层序遍历:从上往下、从左往右迭代遍历:使用迭代方法实现递归函数,与递归等价 morris遍历原创 2022-09-01 21:04:10 · 247 阅读 · 0 评论 -
面试算法 二叉树的遍历,方法递归,前序遍历: 中序遍历: 后序遍历: 层序遍历
二叉树遍历前序遍历:根左右中序遍历:左根右后序遍历:左右根层序遍历:从上往下、从左往右递归遍历:使用递归方法遍历原创 2022-09-01 16:14:04 · 224 阅读 · 0 评论 -
面试算法 三角形的最大周长
题目:三角形的最大周长给定由一些正数(代表长度)组成的数组arr,返回由其中三个长度组成的、面积不为零的三角形的最大周长。如果不能形成任何面积不为零的三角形,返回0。原创 2022-08-31 08:50:29 · 422 阅读 · 0 评论 -
面试算法 柠檬水找零
题目:柠檬水找零在柠檬水摊上,每一杯柠檬水的售价为5美元。顾客排队购买你的产品,一次购买一杯。每位顾客只买一杯柠檬水,然后向你付5美元、10美元或20美元。必须给每个顾客正确找零注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回false,...原创 2022-08-31 08:44:20 · 621 阅读 · 0 评论 -
面试算法 最长连续递增序列 (贪心算法)
1.题目:最长连续递增序列给定一个未经排序的整数数组,找到最长且连续递增的子序列,并返回该序列的长度。序列的下标是连续的。。原创 2022-08-30 12:58:24 · 535 阅读 · 0 评论 -
面试算法 二叉树的最小深度 (简单的BFS)(自写队列 )
二叉树的最小深度 (简单的BFS)(自写队列 )二叉树的最小深度给定一个二叉树,找出其最小深度,最小深度是从根节点到最近叶子节点的最短路径上的节点数量广度优先。原创 2022-08-30 12:49:56 · 133 阅读 · 0 评论 -
面试算法 面试算法 二叉树的最小深度 (简单的BFS)
二叉树的最小深度给定一个二叉树,找出其最小深度,最小深度是从根节点到最近叶子节点的最短路径上的节点数量广度优先。原创 2022-08-29 22:31:30 · 326 阅读 · 0 评论 -
面试算法 二叉树的最小深度 (简单的DFS)
1.题目:二叉树的最小深度给定一个二叉树,找出其最小深度,最小深度是从根节点到最近叶子节点的最短路径上的节点数量深度优先。原创 2022-08-29 10:40:41 · 584 阅读 · 0 评论