2012年12月3日
摘要: 题目:http://www.leetcode.com/2010/04/finding-all-unique-triplets-that-sums.html分析:首先brute force,O(n3)。i j k从0到n-1各循环一遍,肯定不能要。其次,我们先假设只有2个数,对于一个排序的数组来说,如果想要a + b = 0,那么可以两个指针,一个在head(),一个在tail(),然后判断这两个it的值相加是否等于0,如果小于,那么前面的指针++,如果大于,那么后面的指针--,直到指针相遇或者找到和为0的一对。这使得2个数字的算法复杂度由O(n2) -> O(n)。然后,对于3个数字的相 阅读全文
posted @ 2012-12-03 18:17 kkmm 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 题目:http://www.leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-i.html#include <iostream>using namespace std;struct Node{ int value; Node *pLeft; Node *pRight;};Node *CreateNode(int v){ Node *pNode = new Node(); if (!pNode) return NULL; pNode->value = v; p... 阅读全文
posted @ 2012-12-03 16:25 kkmm 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 题目在:http://www.leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-tree-part-i.html自己将上述网址中的 Top-Down Approach 重写了一遍,为了练手。这个方法是基础的方法,复杂度为O(n2),简而言之就是先判断p q是在不同的子树还是相同的子树里,如果不同,那么root就是LCA,如果相同,那么递归。代码如下:#include <iostream>using namespace std;struct Node{ int value; Node *pLeft; Node *pR... 阅读全文
posted @ 2012-12-03 15:58 kkmm 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/qyaizs/articles/2039101.html分三块来讲述: 1 首先://注意在C和C++里不同 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu; 于是在声明变量的时候就可:Stu stu1;(如果没有typedef就必须用struct Student stu1;来声明) 这里的Stu实际上就是struct Student的别名。Stu==struct Student 另外这里也可以不写Student(于是也不... 阅读全文
posted @ 2012-12-03 15:29 kkmm 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 转自:http://www.cnblogs.com/candyming/archive/2011/12/04/2275448.html尾部递归是一种编程技巧。递归函数是指一些会在函数内调用自己的函数,如果在递归函数中,递归调用返回的结果总被直接返回,则称为尾部递归。尾部递归的函数有助将算法转化成函数编程语言,而且从编译器角度来说,亦容易优化成为普通循环。这是因为从电脑的基本面来说,所有的循环都是利用重复移跳到代码的开头来实现的。如果有尾部归递,就只需要叠套一个 stack,因为电脑只需要将函数的 parameter 改变再重新跑一次。例如,可以把上一次函数的输出当作下一次的输入。然而,利用尾部 阅读全文
posted @ 2012-12-03 12:51 kkmm 阅读(2505) 评论(0) 推荐(0) 编辑
摘要: 题目:http://www.leetcode.com/2011/07/lowest-common-ancestor-of-a-binary-search-tree.html思路,先判断入口是否有非法输入。1 如果某一个root==p || root == q,那么LCA肯定是root(因为是top down,LCA肯定在root所囊括的树上,而root又是p q其中一个节点了,那么另外一个节点肯定在root之下,那么root就是LCA),那么返回root2 如果root<min(p, q),那么LCA肯定在右子树上,那么递归3如果max(p, q)<root,那么LCA肯定在左子树 阅读全文
posted @ 2012-12-03 12:42 kkmm 阅读(2199) 评论(0) 推荐(0) 编辑