算法
朱海涛的博客
你知道的越多,你不知道的越多
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
每天一道算法题-K 个一组翻转链表
题目:给你一个链表,每k个节点一组进行翻转,请你返回翻转后的链表。k是一个正整数,它的值小于或等于链表的长度。如果节点总数不是k的整数倍,那么请将最后剩余的节点保持原有顺序。示例:给你这个链表:1->2->3->4->5当k= 2 时,应当返回: 2->1->4->3->5当k= 3 时,应当返回: 3->2->1->4->5说明:你的算法只能使用常数的额外空间。你不能...原创 2020-07-05 17:21:53 · 241 阅读 · 0 评论 -
每天一道算法题-动态规划-罗马数字转整数
题目:罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII, 即为XX+V+II...原创 2020-06-27 22:41:42 · 211 阅读 · 0 评论 -
每天一道算法题- 动态规划-连续子数组的最大值
题目:输入一个整型数组,数组里有正数也有负数。数组中的一个或连续多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4]输出: 6解释:连续子数组[4,-1,2,1] 的和最大,为6。程序:class Solution { public static int maxSubArray(int[] nums) { int res = nums[0];...原创 2020-06-26 12:38:31 · 352 阅读 · 0 评论 -
每天一道算法题-动态规划-股票的最大利润
题目描述:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少?示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 注意利润不能是 7-1 = 6, 因为卖出价格需要大于买入价格。示例 2:输入: [7,6,4,3,1]输出: 0解释: 在这种情况下, 没有交易完成, 所以最大利润为 0。分析:...原创 2020-06-26 11:47:35 · 866 阅读 · 0 评论 -
每天一道算法题-动态规划 单词分隔
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,判定s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词。你可以假设字典中没有重复的单词。示例 1:输入: s = "leetcode", wordDict = ["leet", "code"]输出: true解释: 返回 true 因为 "leetcode" 可以被拆分成 "leet code"。示例 2:输入: s = "applepenapple", wordDict .原创 2020-06-25 23:49:23 · 284 阅读 · 0 评论 -
每天一道算法题-动态规划求钢筋分割
Dynamic programming 动态规划,与分治法相似,都是通过组合子问题的解来求解原问题,但动态规划是应用于子问题重叠的场景,每个子问题都只求一遍,将解存入表格中,避免不必要的重复工作。问题:购买长钢条,将其切割为短钢条出售,不同长度的钢条对应不同的价格,希望得到最佳的切割方案使利润最大化。长度 i 1 2 3 4 5 6 7 8 9 10 价格 p 1 5 8 9 10 17 17原创 2020-06-22 15:07:52 · 638 阅读 · 1 评论 -
每天一道算法题-暴力求解建物流中间站
Shopee物流会有很多个中转站。在选址的过程中,会选择离用户最近的地方建一个物流中转站。假设给你一个二维平面网格,每个格子是房子则为1,或者是空地则为0。找到一个空地修建一个物流中转站,使得这个物流中转站到所有的房子的距离之和最小。 能修建,则返回最小的距离和。如果无法修建,则返回 -1。若范围限制在100*100以内的网格,如何计算出最小的距离和?当平面网格非常大的情况下,如何避免不必要的计算?输入描述:40 1 1 01 1 0 10 0 1 00 0 0 0..原创 2020-06-19 18:04:48 · 519 阅读 · 0 评论 -
每天一道算法题-贪心求最大连续数列和
对于一个有正有负的整数数组,请找出总和最大的连续数列。给定一个int数组A和数组大小n,请返回最大的连续数列的和。保证n的大小小于等于3000。测试样例:[1,2,3,-6,1]返回:6解题思路:贪心算法每次求局部最优解,先设置max为数组中的第一个数,然后计算A[0]到A[n]数组的和temp与max比较,如果大于max,则将temp的值的赋值给max,其次因为题目说数组是连续的即可,则还有依次从A[1],A[2]通过相同的方式求和与max比较求得局部最优解,最后达成整体上的最优解原创 2020-06-17 19:45:57 · 633 阅读 · 0 评论 -
每天一道算法题-多多的魔术盒子
题目描述多多鸡有N个魔术盒子(编号1~N),其中编号为i的盒子里有i个球。多多鸡让皮皮虾每次选择一个数字X(1 <= X <= N),多多鸡就会把球数量大于等于X个的盒子里的球减少X个。通过观察,皮皮虾已经掌握了其中的奥秘,并且发现只要通过一定的操作顺序,可以用最少的次数将所有盒子里的球变没。那么请问聪明的你,是否已经知道了应该如何操作呢?输入描述:第一行,有1个整数T,表示测试用例的组数。(1 <= T <= 100)接下来T行,每行1个整数N,表示有N个魔原创 2020-06-16 12:30:53 · 622 阅读 · 0 评论
分享