一:递归版本 1 class LinkList 2 { 3 public class LinkNode 4 { 5 public int data; 6 7 public LinkNode next; 8 ...
分类:
其他好文 时间:
2014-10-17 15:27:07
阅读次数:
218
hdu5044 Tree 树链剖分,点剖分,边剖分,非递归版
//#pragma warning (disable: 4786)
//#pragma comment (linker, "/STACK:16777216")
//#pragma comment(linker, "/STACK:60400000,60400000")
//HEAD
#include
#include
#i...
分类:
其他好文 时间:
2014-10-06 21:36:10
阅读次数:
663
最大公约数,根据《编程之美》递归版写的非递归版:1. 对于y和x来说,如果y=k*y1, x = k * x1。那么有gcd(y,x)=k*gcd(y1, x1);2. 如果x=p*x1, p是素数(质数),并且y%p != 0,那么gcd(x, y) = gcd(p * x1, y) = gcd(...
分类:
其他好文 时间:
2014-09-15 12:54:18
阅读次数:
129
我写了两个版本供参考:
递归版本
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) {
return addTwoNumbers(l1, l2, 0);
}
ListNode *addTwoNumbers(ListNode *l1, ListNode *l2, int carry) {
...
分类:
其他好文 时间:
2014-09-14 12:53:17
阅读次数:
216
有些人说 归并排序的递归版本实用性差 可读性强非递归版本恰好相反我觉得 也没那么明显差距吧....其实非递归版本也不难理解的假如 我们需要进行排序的数组的长度为 len 每次的子排序数组区间为size那么我们首先将它拆成 len个size为1的小区间 然后2个相邻的进行合并merge排序 这时候 你...
分类:
其他好文 时间:
2014-08-27 20:27:18
阅读次数:
346
首先,归并排序,分治,递归解决小的范围,再合并两个有序的小范围数组,便得到整个有序的数组。
这是很适合用递归来写的,至于非递归,便是从小到大,各个击破,从而使得整个数组有序。代码如下:
void merge(vector &A, int left, int mid, int right)
{
int i=left,j=mid+1;
vector tmp(right-left+1,0);...
分类:
其他好文 时间:
2014-08-10 13:08:00
阅读次数:
235
大白书上说的是模运算。。而且给出了递归版的代码。。我觉得还是非递归的好。。而且加上了位运算,速度更快。下面是快速幂取模模板。
模板:
LL quickpow(LL n, LL m, int mod)
{
LL ans=1;
while(m>0)
{
if(m&1)
ans=ans*n%mod;
m=m >>...
分类:
其他好文 时间:
2014-08-06 12:02:21
阅读次数:
234
二叉树的三种遍历有递归版本,和迭代版本。本文介绍一种新的思路。
参考了 http://coolshell.cn/articles/9886.html
在许多应用中,我们还需要对遍历本身进行抽象。假如有一个求和的函数sum,我们希望它能应用于链表,数组,二叉树等等不同的数据结构。这时,我们可以抽象出迭代器(Iterator)的概念,通过迭代器把算法和数据结构解耦了,使得通用算法能应用于不同类...
分类:
其他好文 时间:
2014-07-08 15:41:35
阅读次数:
176
如果按层次遍历,存下每一层的点,会MLE。1、递归版本:关键还是子问题的划分。 1 /** 2 * Definition for binary tree 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * ...
分类:
其他好文 时间:
2014-07-07 13:58:07
阅读次数:
181