
力扣经典算法题
文章平均质量分 59
程序小勇
本人热爱专研IT技术,广泛且深入学习研究前后端开发、机器学习和深度学习算法,是一名全栈优秀开发高级工程师,曾在华为总部工作3年,负责IT研发,积累丰富开发技术经验。欢迎关注,一起交流学习进步哦,更多精彩等你!
展开
-
【力扣经典面试题】14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 通过示例分析可以发现, 通过遍历每个单词的相同索引下标并且对相应的字母进行对比,只要发现有一个字母不同便结束循环,返回结果。如果所有字母均相同则返回strs[0]。同时如果字符串数组为空则返回空字符。原创 2024-03-06 06:15:00 · 316 阅读 · 0 评论 -
【力扣经典面试题】58. 最后一个单词的长度
代码运行时间和空间分析。因为整体只要遍历一次字符串就可以了,所以时间复杂度O(n) 其中n为字符串的长度。本题代码不用开辟新的空间来临时存在变量,所以空间复杂度为O(1)。原创 2024-03-05 20:24:46 · 482 阅读 · 1 评论 -
【力扣经典面试题】12. 整数转罗马数字
罗马数字包含以下七种字符:IVXLCD和M。例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为XII。27 写做XXVII, 即为XXVII。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做IIII,而是IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4。同样地,数字 9 表示为IX。IVXXLCCDM给你一个整数,将其转为罗马数字。原创 2024-03-05 15:34:14 · 567 阅读 · 0 评论 -
[经典力扣面试题]135. 分发糖果
n个孩子站成一排。给你一个整数数组ratings表示每个孩子的评分。1请你给每个孩子分发糖果,计算并返回需要准备的。5你可以分别给第一个、第二个、第三个孩子分发 2、1、2 颗糖果。4你可以分别给第一个、第二个、第三个孩子分发 1、2、1 颗糖果。第三个孩子只得到 1 颗糖果,这满足题面中的两个条件。原创 2024-02-26 09:31:49 · 428 阅读 · 0 评论 -
【力扣经典面试题】238. 除自身以外数组的乘积
复杂度分析:时间复杂度O(n),其中 n指的是数组 nums 的大小。预处理 L 和 R 数组以及最后的遍历计算都是 O(n) 的时间复杂度。空间复杂度:O(n),其中 n 指的是数组 nums 的大小。使用了 L 和 R 数组去构造答案,L 和 R 数组的长度为数组 nums 的大小,即length。本题解题方案根据左右乘积列表计算返回结果,时间和空间复杂度相对较高,解题算法还需进一步提升优化。原创 2024-02-23 22:34:31 · 457 阅读 · 0 评论 -
【力扣经典面试题】274. H 指数
对给定的引用次数数组进行降序排序,以便更方便地找到高引用次数的论文。 遍历排序后的数组,对于每篇论文,判断当前的引用次数是否大于等于当前索引加1。 如果满足条件,更新h的值为当前索引加1。 如果不满足条件,跳出循环,返回最终的h值。 这个方法的核心思想是通过排序将高引用次数的论文放在前面,然后遍历数组找到最大的h值,即满足至少有h篇论文被引用了h次的条件。排序的时间复杂度是O(nlogn),遍历数组的时间复杂度是O(n),因此总体的时间复杂度是O(nlogn)。原创 2024-02-03 15:42:16 · 532 阅读 · 0 评论 -
【力扣经典面试题】45. 跳跃游戏 II
这个算法通过贪心策略选择每次跳跃时能够到达的最远位置,从而在遍历数组的过程中不断更新步数,最终得到跳到最后一个元素所需的最小步数。原创 2024-02-02 15:35:28 · 485 阅读 · 0 评论 -
【力扣经典面试题】55. 跳跃游戏
这个算法的时间复杂度是 O(n),其中 n 是数组的长度,因为它只对数组进行一次线性遍历。这种贪心算法的思想是每次都选择能够跳跃最远的位置,以尽可能地覆盖更多的元素,从而判断是否能够到达最后一个元素。原创 2024-02-02 15:28:20 · 615 阅读 · 0 评论 -
【力扣经典面试题】122. 买卖股票的最佳时机 II
初始化最大利润ans为0,获取股票价格数组的长度n。使用循环从第二天开始遍历到最后一天,对每一天进行处理。计算当前交易的利润,使用来保证利润不为负数,即如果价格上涨则累加利润,否则不进行操作。将每次计算得到的利润累加到总利润ans中。返回最终的总利润作为最大利润。该算法的核心思想是通过贪心策略,在每一次价格上涨时进行交易,以获得最大的累积利润。这样的贪心策略适用于该问题,因为我们只关心总体利润的增加,而不需要具体的买卖操作。最终的时间复杂度是O(n),其中n是股票价格数组的长度。原创 2024-02-01 16:57:07 · 672 阅读 · 0 评论 -
[经典面试题]169. 多数元素
给定一个大小为n的数组nums,返回其中的多数元素。多数元素是指在数组中出现次数⌊ n/2 ⌋的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。32。原创 2024-01-30 23:56:42 · 437 阅读 · 1 评论 -
[数据结构与算法]哈希算法
哈希算法常用于存储用户密码。而不是直接存储密码本身,系统通常会将密码哈希后存储。当用户登录时,系统会对用户提供的密码进行哈希,并将其与存储的哈希值进行比较,而不是明文密码。常用的密码哈希算法包括SHA-256和bcrypt。数字签名使用哈希算法来确保数据的完整性和认证。发送方使用私钥对消息进行哈希,并将哈希值与私钥一起签名。接收方使用发送方的公钥验证签名,并通过哈希比较确保消息的完整性。哈希算法用于验证数据在传输过程中是否被篡改。发送方计算数据的哈希值并将其一并发送。原创 2024-01-30 23:41:48 · 1237 阅读 · 1 评论 -
【力扣经典面试题】合并两个有序数组
给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。 请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。 注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m + n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。原创 2024-01-28 23:33:59 · 447 阅读 · 0 评论