算法
ltachi刘
这个作者很懒,什么都没留下…
展开
-
LeetCode买卖股票的最佳时机-动态规划
第一题给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。注意你不能在买入股票前卖出股票。示例 1:输入: [7,1,5,3,6,4]输出: 5解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。注意利...转载 2019-12-10 09:58:36 · 143 阅读 · 0 评论 -
分治法
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。算法:为了解决这个问题,我们需要理解 “中位数的作用是什么”。在统计中,中位数被用来:将一个集合划分为两个长度相等的子集,其中一个子集中的元素总是大于另一个子集中的元素。这其中又...转载 2019-11-25 16:24:50 · 419 阅读 · 0 评论 -
滑动窗口
题目:给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。解析:暴力解法时间复杂度较高,会达到 O(n^2),故而采取滑动窗口的方法降低时间复杂度。1.定义一个 map 数据结构存储 (k, v),其中 key 值为字符,value 值为字符位置 +1,加 1 表示从字符位置后一个才开始不重复;2.我们定义不重复子串的开始位置为 start,结束位置为 end;3.随着 end...原创 2019-11-25 15:38:16 · 69 阅读 · 0 评论 -
动态规划(1)--青蛙跳台阶
动态规划例子一:一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个n级台阶总共有多少种跳法。分析:第一步:假设台阶有7阶的话,先从正向分析,假如先跳了一阶,那么还有六阶可选,假如先挑了二阶,就还有五阶可选。所以可以得出,在青蛙做出一个动作后会有f(7) = f(6) + f(5);第二步在青蛙做出第二步动作时,先假设青蛙第一次只跳了一阶,此时剩六阶台阶,又演变成了我们...原创 2019-11-22 16:09:16 · 667 阅读 · 0 评论