![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
文章平均质量分 62
算法题
ITqingliang
一位努力的boy
展开
-
【LeetCode】2285. 道路的最大总重要性
给你一个整数 n ,表示一个国家里的城市数目。城市编号为 0 到 n - 1 。给你一个二维整数数组 roads ,其中 roads[i] = [ai, bi] 表示城市 ai 和 bi 之间有一条 双向 道路。你需要给每个城市安排一个从 1 到 n 之间的整数值,且每个值只能被使用 一次 。道路的 重要性 定义为这条道路连接的两座城市数值 之和 。请你返回在最优安排下,所有道路重要性 之和 最大 为多少。...原创 2022-06-24 09:51:10 · 285 阅读 · 0 评论 -
【LeetCode】1011. 在 D 天内送达包裹的能力(二分搜索)
题目描述传送带上的包裹必须在 days 天内从一个港口运送到另一个港口。传送带上的第 i 个包裹的重量为 weights[i]。每一天,我们都会按给出重量(weights)的顺序往传送带上装载包裹。我们装载的重量不会超过船的最大运载重量。返回能在 days 天内将传送带上的所有包裹送达的船的最低运载能力。示例1:输入:weights = [1,2,3,4,5,6,7,8,9,10], days = 5输出:15解释:船舶最低载重 15 就能够在 5 天内送达所有包裹,如下所示:第 1 天原创 2022-05-17 11:25:01 · 220 阅读 · 0 评论 -
在 O(1) 时间内删除单链表结点
文章目录描述思路实现代码描述给定单向链表的头指针和结点指针,定义一个函数在 O(1) 时间内删除该结点。思路按照传统的思路,删除一个单链表的时间复杂度是 O(n),之所以要从头指针开始遍历,是为了找到被删除结点的前驱结点,然后将前驱结点的指针指向被删除结点的下一个结点,从而完成删除结点的工作。但是细想一下,这个时间复杂度是可以优化的,在这个题目中,我们已经知道被删除结点的信息,这样就可以获知被删除结点的下一个结点,要完成删除工作,只需要把下一个结点的值复制到待删除结点,然后把待删除结点的指针指向下原创 2021-08-12 09:38:46 · 253 阅读 · 0 评论 -
【LeetCode】5.最长回文子串(动态规划)
题目描述定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”解题思路我们用一个 boolean dp[j][i] 表示字符串从 i 到 j 这段是否为回文。试想如果 dp[j][i]=true,我们要判断 dp[j-1][i+1] 是否为回文。只需要判断字符串在(j-1)和(i+1)两个位置是否为相同的字符,是不是原创 2020-10-24 16:18:59 · 234 阅读 · 0 评论 -
【LeetCode】55. 跳跃游戏 (动态规划)
题目描述给定一个非负整数数组,你最初位于数组的第一个位置。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个位置。示例 1:输入: [2,3,1,1,4]输出: true解释: 我们可以先跳 1 步,从位置 0 到达 位置 1, 然后再从位置 1 跳 3 步到达最后一个位置。示例 2:输入: [3,2,1,0,4]输出: false解释: 无论怎样,你总会到达索引为 3 的位置。但该位置的最大跳跃长度是 0 , 所以你永远不可能到达最后一个位置。解题思路逆原创 2020-10-19 14:23:23 · 243 阅读 · 0 评论 -
【LeetCode】474. 一和零 (动态规划)
问题描述在计算机界中,我们总是追求用有限的资源获取最大的收益。现在,假设你分别支配着 m 个 0 和 n 个 1。另外,还有一个仅包含 0 和 1 字符串的数组。你的任务是使用给定的 m 个 0 和 n 个 1 ,找到能拼出存在于数组中的字符串的最大数量。每个 0 和 1 至多被使用一次。示例 1:输入: strs = [“10”, “0001”, “111001”, “1”, “0”], m = 5, n = 3输出: 4解释: 总共 4 个字符串可以通过 5 个 0 和 3 个 1 拼出原创 2020-10-16 14:17:53 · 257 阅读 · 1 评论 -
算法题:二叉树展开为链表
目录题目描述解题思路题目描述给定一个二叉树,原地将它展开为一个单链表。例如,给定二叉树 1 / \ 2 5 / \ \3 4 6将其展开为:1\2\3\4\5\6解题思路我们需要两步完成这道题。 将左子树插入到右子树的地方 将原来的右子树接到左子树的最右边节点 考虑...原创 2020-08-10 09:47:07 · 202 阅读 · 0 评论 -
算法题:卖股票,求最大利润
题目描述给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持有并卖出股票的整个过程,每笔交易你只需要为支付一次手续费。示例 1:输入: prices = [1, 3, 2, 8, 4, 9], fee = 2 输出: 8 解释: 能够达到的最大利润:在此处原创 2020-07-30 09:45:26 · 962 阅读 · 0 评论 -
算法题:三数之和为0
题目给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。注意:答案中不可以包含重复的三元组。示例:给定数组 nums = [-1, 0, 1, 2, -1, -4],满足要求的三元组集合为:[ [-1, 0, 1], [-1, -1, 2] ]思路这道题是典型的双指针应用,双指针和此题的面试出镜率都很高,建议掌握!这道题的算法思路如下:特殊判断,对于数组长度 n,如果数组原创 2020-07-29 09:58:12 · 1332 阅读 · 0 评论 -
算法题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
题目给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/two-sum 著作权归领扣原创 2020-07-28 09:33:38 · 1557 阅读 · 0 评论 -
算法题:滑动窗口----- 颜色分类
给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。注意:不能使用代码库中的排序函数来解决这道题。示例:输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]进阶:一个直观的解决方案是使用计数排序的两趟扫描算法。首先,迭代计算出0、1 和 2 元素的个数,然后按照0、1、2的排序,重写当前数组。你能想出一个仅使用常数空间的一趟扫描原创 2020-06-15 09:43:15 · 240 阅读 · 0 评论