一、比较朴素的算法 算法思想:我们确定每个子段和开始的位置,分别为第一个,第二个,第三个......第N个,然后计算从这个位置开始到这个位置之后的每个位置的子段和,更新记录最大的子段和。 时间复杂度:O(n^2) 算法实现(Java): 二、分治法(递归) 算法思想: 通过分治的思想求最大子段和,将 ...
分类:
编程语言 时间:
2017-05-09 21:40:04
阅读次数:
175
前言 使用递归(Recursion)建立二叉树(Binary Tree)的非顺序存储结构(即二叉链表),可以简化算法编写的复杂程度,但是递归效率低,而且容易导致堆栈溢出,因而很有必要使用非递归算法。 引入 无论是单链表还是二叉树,创建时要解决问题就是关系的建立,即单链表中前驱节点与当前节点的关系和二 ...
分类:
其他好文 时间:
2017-05-09 01:00:59
阅读次数:
372
引言: 快速排序和归并排序是面试当中常常被问到的两种排序算法,在研究过数据结构所有的排序算法后,个人认为最复杂的当属快速排序。从代码量上来看,快速排序并不多,我之所以认为快排难以掌握是因为快排是一种递归算法,同时终止条件较多。如果你刚刚把快排的思路整理过一遍可能觉得不难,然而一个月之后呢? 面试要求 ...
分类:
编程语言 时间:
2017-05-06 18:58:27
阅读次数:
343
二叉树的中序遍历 给出一棵二叉树,返回其中序遍历 样例 给出二叉树 {1,#,2,3}, 1 \ 2 / 3 返回 [1,3,2]. 挑战 你能使用非递归算法来实现么? 标签 递归 二叉树 二叉树遍历 1 /** 2 * Definition of TreeNode: 3 * class TreeN ...
分类:
其他好文 时间:
2017-05-02 19:43:22
阅读次数:
185
递归 特定: 递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题十分有效,它往往是算法的描述简洁而且易于理解。 递归算法解决问题的特点: (1)递归就是在过程或函数里调用自身。 (2)在使用递归测略时,必须有一个明确的递归结束条件,称为递归出口。 (3)递归 ...
分类:
其他好文 时间:
2017-05-01 00:26:02
阅读次数:
113
1 #include//***28&&16行相当于递归算法****** 2 #include 3 #include 4 using namespace std; 5 const int MAXN=1000001; 6 char a[MAXN],b[MAXN]; 7 int la,lb; 8 int ... ...
分类:
编程语言 时间:
2017-04-30 11:00:00
阅读次数:
163
1、二叉树定义: typedef struct BTreeNodeElement_t_ { void *data; } BTreeNodeElement_t; typedef struct BTreeNode_t_ { BTreeNodeElement_t *m_pElemt; struct BTr ...
分类:
编程语言 时间:
2017-04-29 14:18:56
阅读次数:
224
一:用递归算法 二:用while循环法 测试: int[] num = { 1, 2, 8, 9, 95, 98, 100, 190, 900 }; int results = change(num, 190, num.Length); int resultss = change2(); ...
分类:
编程语言 时间:
2017-04-27 21:04:27
阅读次数:
220
斐波那契数列问题是算法学习者必定接触到的问题。作为经典问题,首次接触时通常是作为递归算法的案例教程。 然而递归解决斐波那契。其效率低的令人发指,有人算出其时间复杂度为O(2^n)。指数级时间复杂度。 假设面试的时候面试官问你斐波那契的求解方法,你来一个递归求解,基本上能够说,你已经game over ...
分类:
编程语言 时间:
2017-04-25 11:49:25
阅读次数:
177
1.递归算法 2..for循环 3.while循环 4.do.....while循环 ...
分类:
编程语言 时间:
2017-04-25 10:10:18
阅读次数:
350