![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
bestswifter
这个作者很懒,什么都没留下…
展开
-
KT学算法(二)——循环有序数组查找指定元素
问题描述一个循环有序的数组是形如:“12,16,18,20,41,100,1,4,6,9” 这样的数组。问题分析对于循环有序数组,一种简单的定义是: 循环有序数组是将一个有序数组切成两段,并交换位置得到引用块内容比如现将1,4,6,9,12,16,18,20,41,100在9和12处切分,得到两段:1,4,6,9和12,16,18,20,41,100,再交换这两段的位置就得到了一开始的循环有序原创 2015-06-22 11:25:57 · 3493 阅读 · 0 评论 -
KT学算法(一)——数列连续子列最大和问题的O(n)解法
深刻意识到算法的重要性。从头开始,积累基本的算法模型。问题描述数列连续子列最大和问题是指:给定一个数列A,求出一个子数列,{Ai,Ai+1,Ai+2,……,Aj},其中i<=j,使得这个子数列中每一个元素的和最大。举例说明盗用别人一个例子:给定整数序列:{0, -3, 6, 8, -20, 21, 8, -9, 10, -1, 3, 6, 5} 其中和最大的连续子数列为:{21, 8, -9, 1原创 2015-06-11 22:11:03 · 2047 阅读 · 1 评论 -
KT学算法(三)——最长回文子串与Manacher算法
题目来源: https://leetcode.com/problems/longest-palindromic-substring/解题思路:方法一:暴力查找:由于找到字符串的所有字串的时间复杂度为O(n^2),判断一个字符串是否为回文串需要遍历,时间复杂度为O(n),所以这个算法的时间复杂度为O(n^3)方法二:对于任意一个长度为n的字符串,总是存在最长的回文字串,对于这个回文字串而言,它的原创 2015-10-03 11:45:46 · 1378 阅读 · 0 评论 -
KT学算法(四)——找数组中出现超过一半的数字的优雅解和拓展
问题描述数组中有一个数字出现次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度一半,因此输出2问题分析首先想到的是,可以维护一个数据结构用来存储每个数字对应的出现次数。没遇到一个新的数字就去找这个数字是否出现过,如果出现过就加1.这种思路最简单,但是时间复杂度是O(n^2)。稍做优化,可以把数组排序,然原创 2015-11-28 22:05:38 · 2581 阅读 · 0 评论