
Review
鱼忆七秒呐
这个作者很懒,什么都没留下…
展开
-
[lintcode]二叉树的层序遍历
给一棵二叉树 {3,9,20,#,#,15,7} : 3 / \ 9 20 / \ 15 7 返回他的分层遍历结果: [ [3], [9,20], [15,7] ]/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNod原创 2017-07-22 15:58:55 · 314 阅读 · 0 评论 -
排序一个数组要求时间复杂度为O(N)
#define SIZE 65535void Sort(int* a, int len){ int *data=new int[SIZE]; memset(data, 0, sizeof(int)*SIZE);//这里必须先将开辟的数组空间初始化为0 if (a == NULL) { return; } int i = 0;原创 2017-08-15 19:26:13 · 5194 阅读 · 0 评论 -
统计水果出现的次数及求出前K中出现次数最多的水果
统计次数//仿函数struct Geater{ bool operator()(map<string,int>::iterator l,map<string,int>::iterator r) { return (l->second) > (r->second); }};第一种方法map<string, int> dict; int i = 0;原创 2017-08-06 17:56:09 · 1009 阅读 · 0 评论 -
选择排序和堆排序
选择排序选择排序的思想很简单,就是在数组找到一个最大的然后放到最后面(升序)、最前面(降序),或者找一个最小的放到最前面(升序)最后面(降序)。此外还有优化方案就是从两边开始,同时找最大的和最小的,找的后放到正确的位置void SelectSort1(vector<int>& v){ if (v.empty()) { return; } int i原创 2017-08-05 20:29:20 · 321 阅读 · 0 评论 -
C语言模式实现C++继承和多态
简单模拟下c语言实现继承与多态typedef void(*FUN)();//函数指针struct A{ int a; int b; FUN fun;};struct B{ A _a;//B继承A};void fA(){ cout << "A" << endl;}void fB(){ cout << "B" << endl;}i原创 2017-08-05 15:27:47 · 354 阅读 · 0 评论 -
前序遍历和中序遍历构造二叉树[lintcode]
/** * Definition of TreeNode: * class TreeNode { * public: * int val; * TreeNode *left, *right; * TreeNode(int val) { * this->val = val; * this->left = this->right =原创 2017-08-05 14:11:37 · 3458 阅读 · 0 评论 -
直接插入排序与希尔排序
//一次往后走,用此前的数保存下来与与已经有序的前一段区间进行一一比较,升序,比它大,位置往后移,直到比它小,就把该数放到该位置,再往后走。void InsertSort(vector<int>& A) { // Write your code here //insertsort 直接插入排序 时间复杂度是O(n^2) 稳定的排序算法 int i = 0; for原创 2017-08-03 10:36:06 · 332 阅读 · 0 评论 -
判断一个树为完全二叉树
完全二叉树 该节点有左子树,可以没有有子树,但如果有右子树,就必须有左子树这里我们可以用层序遍历的思想,借助一个队列,队列保存的是Node*,将该节点入队列,出队列的同时将下一层自己的左右节点入队列,设置一个标志位,刚开始位true,如果此时左右节点为空时,置为false,第一次为false,当第二次进来时,将该节点入队列后,判断下flag,此时flag为false,说明该层的上一个节点为空,而此原创 2017-08-04 17:39:37 · 676 阅读 · 0 评论 -
树中两个节点的最低公共祖先(剑指offer)
三种情况:二叉树每个节点都有parent即三叉链搜索二叉树普通的二叉树第一种情况:如果是一个三叉链,每一个节点都有一个parent,我们可以把它当成求两个链表的第一个公共节点。两个链表的开始分别是这两个节点,链表指向下一个节点的指针就是二叉树中指向父子节点的parent,而这两个链表的第一个公共节点就是二叉树中要找的两个节点的最低公共祖先。第二种情况作为一个搜索二叉树,最重要的特点就是左子树原创 2017-08-05 09:49:05 · 832 阅读 · 0 评论 -
二叉树的叶子节点、第K层节点/数组中数字次数超过数组长度的一般
//一个数组中有一个数字的次数超过了数组的一半,求出这个字符。//如:int a[] = { 2, 3, 2, 2, 2, 2, 2, 5, 4, 1, 2, 3 },求出超过一半的数字是2。//我这里用来两种方法,第一种可以用哈希表来统计次数来解决这个问题。第二种是num出现的次数,出现一次num++,没有出现num--,当num减到0时,字符重新改变。因为出现的次数大于数组长度的一般,所以遍原创 2017-07-22 20:30:40 · 451 阅读 · 0 评论 -
剑指offer46 求1+2+3...+n的和
问题描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。 解决利用构造函数求解 创建该类的n个对象,在该类里定义两个静态成员变量n和sum,静态成员变量为所有对象所共享,在构造函数里对其操作。这样创建几个对象就调用几次构造函数,并加了多少次。class Temp{public: Tem原创 2017-08-30 20:37:54 · 403 阅读 · 0 评论