![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
LeetCode
PenyPeng
千里之行始于足下
展开
-
动态规划求解最长回文字符串
首先介绍一下,动态规划算法: 动态规划问题就是,大问题分成小问题,不断地递归,比如一个1000个字符的字符串问题,这个问题的解决建立在999个字符的字符串问题的基础上再添加一个字符串。动态规划算法就是利用空间来提高效率,存储每个子问题处理的结构,然后再解决更大的问题时,如果利用到子问题则直接使用处理的子问题结果。这样可以减少冗余,提高效率。具体的算法的解释,我看了别人的一篇博客,讲解的不错原创 2017-06-18 16:31:45 · 1155 阅读 · 0 评论 -
Leetcode-2sum,3sum,4sum
Leetcode-2sum,3sum,4sum(Python)解析LeetCode有三道题是求一个数组中的数字任意三个或者四个数的和等于目标值的题。最简单,最暴力的方法就是每三个或者四个数都进行尝试,时间复杂度是o(n^3)或是o(n^4),肯定是超时的。主要思想是,利用两个指针进行移动,选取符合条件的数字。原创 2017-07-11 16:35:31 · 432 阅读 · 0 评论 -
总结几种排序算法(二)---选择排序
选择排序选择排序很简单,其实就是每次遍历,找到一个最大(最小)的数放在前面,所以对应的时间复杂度也就是O(n^2)。 算法步骤: 1.将第一个位置上的数字设置为a[1],依次与后面的数字a[j]比较,如果a[1]大则不做处理,如果a[1]小则交换两个数a[1]<–>a[j],然后继续比较直到将数组中所有数字都与a[1]进行比较后,则a[1]中存放的就是最大的数字; 2.将数组看成从a[2]开始原创 2017-07-30 19:49:55 · 442 阅读 · 0 评论 -
Reverse the linked list--递归与迭代
Reverse the linked list–递归与迭代本文以逆转单链表的例子解释递归与迭代1.递归递归就是 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。(百度百科) 总结:利用调用自身来不断原创 2018-01-19 14:54:11 · 321 阅读 · 0 评论