
Data Structure
文章平均质量分 72
洞之蝉
真正想做的人总是什么也不说,扭头就去做了。
展开
-
【算法导论】No.16 动态规划
一、动态规划:通过组合子问题的解来解决问题。 动态规划对于每个子问题只求解一次,将结果保存在一张表里。 通常用于求解最优化问题。二、动态规划算法设计步骤:描述最优解结构 递归定义最优解的值 按自底向上的方式计算最优解 由计算出的结果构造一个最优解 ...原创 2019-04-22 13:42:20 · 270 阅读 · 0 评论 -
【Leetcode】No.5 Longest Palindromic Substring
一、暴力法时间复杂度、空间复杂度 均为O(n^2) public String longestPalindrome(String s) { //暴力算法 if(s.isEmpty()){ return s; } String res = s.substring(0,1); for (i...原创 2019-04-22 13:29:16 · 147 阅读 · 0 评论 -
【面试总结】机器人相遇问题
题目描述: 在一条左右水平放置的直线轨道上任选两个点,放置两个机器人,请用如下指令系统为机器人设计控制程序,使这两个机器人能够在直线轨道上相遇。(注意两个机器人用你写的同一个程序来控制) 指令系统:只包含4条指令,向左、向右、条件判定、无条件跳转。其中向左(右)指令每次能控制机器人向左(右)移动一步;条件判定指令能对机器人所在的位置进行条件测试,测试结果是如果对方机器人曾经到过原创 2014-10-17 15:25:36 · 3293 阅读 · 0 评论 -
【 Algorithm】顺序打印矩阵——美团四面
/********************************顺时针打印矩阵:思路:1.首先判断循环条件:每次一圈开始时,左上角横纵坐标一样,所以可以作为循环条件col>2*start,row>2*start2.打印每一圈 A.第一步总是要打的 B.第二步需要有两行才进行 C.第三步至少两行两列 D.第四步至少三行两列*******************原创 2014-09-30 14:13:02 · 640 阅读 · 0 评论 -
【 Algorithm】数组中重复的数字
/******************************************************题目:数组中重复的数字长度为n的数组,所有数字都是0~n-1范围内,找出数组中任意重复的数字。如{2,3,1,0,2,5,3},那么输出2或3思路:如果数组没有重复的,排序后,第i个数的值为i从开头扫描字符串,如果a[i]!=i,就把a[i]和第a[ a[i] ]交换。即第原创 2014-09-11 17:14:39 · 533 阅读 · 0 评论 -
【Operating System】内存管理/分页机制,虚拟内存到实际物理地址的转换
即判断二进制中1的个数是不是为1#include "stdafx.h"#includeusing namespace std;bool isPowerOf2(int n){ int count = 0; while(n) { count ++; n= n &(n-1); } if(count == 1) return true; else retu原创 2014-09-10 22:34:19 · 966 阅读 · 1 评论 -
strstr/strcpy/strpbrk函数的实现
/********************************************************************* 题目:15. 现场编写strstr/strcpy/strpbrk函数 原型声明:extern char* strcpy(char*dest,char*src); 功能:把src指向的NULL结束的字符串复制到dest所指的数组中 注意:src和de原创 2014-09-10 08:42:00 · 671 阅读 · 2 评论 -
【 Algorithm】排序数组中查找和为n的一对数和所有组合
/*************************************************题目:11. 递增数组中查找和为n的一对数思路:设置头尾指针,比较两者指向的数之和与sum的大小****************************************************/#include"stdafx.h"#includeusing namespace原创 2014-09-09 21:13:52 · 815 阅读 · 0 评论 -
求1+2+3+……+n的和
/*************************************************题目:9. 求1+2+3+……+n的和不能用乘除法、for while if switch等思路:还是让相同的代码循环执行n遍1.构造函数先定义一个类型,然后创建n个实例,构造函数中++n2.使用虚函数求解!!n,n为0时为0,不为0时为1,可以分两种情况调用虚函数3.使用函数原创 2014-09-09 20:27:43 · 3104 阅读 · 0 评论 -
求二叉树节点的最大距离
/*************************************************题目:求二叉树中节点的最大距离距离就是节点到根节点的边数,最大距离必然是叶子节点间的距离思路:1.转化为子树上的解2.递归遍历左右子树,计算左右子树的最长节点距离3.更新最长节点距离**************************************************原创 2014-09-09 19:45:16 · 550 阅读 · 0 评论 -
翻转句子中单词的顺序
/*************************************************题目:翻转句子中单词的顺序如:I am a student 输出tneduts a ma I思路:两次翻转1.先翻转整个句子2.依次翻转每个单词****************************************************///翻转函数void Rever原创 2014-09-09 18:55:58 · 632 阅读 · 0 评论 -
二叉树——判断整数序列是否为二叉搜索树的后序序列
/*************************************题目:判断整数序列是不是二叉搜索树的后序遍历思路:后序遍历根在最后1.从开头和根依次比较,划分左右子树2.右子树一但有<根的,false3.递归判断左右子树4.返回左右子树的Bool值想与**************************************/bool isPosOrder(in原创 2014-09-09 17:02:10 · 506 阅读 · 0 评论 -
二叉树——和为某一值的所有路径
思路:1、设置vector保存值,前序遍历二叉树,遍历一个节点,存一个值,设置cursum和sum,2、当cursum==sum且是叶子节点,打印vector中的值3、否则不是叶子节点,递归遍历左子树、遍历右子树,都不成立,pop容器的值void FindPath(BiTreeNode* T,int sum){ if(T == NULL) return; ve原创 2014-09-09 14:40:40 · 476 阅读 · 0 评论 -
从第一个字符串中删除在第二个字符串中出现的字符
// 36_1.cpp : 定义控制台应用程序的入口点。//从第一个字符串中删除第二个字符串中出现的所有字符//如:"we are student"//删除aeiou后"w r stdnts"//方法:建立哈希表,遍历字符串2,然后遍历字符串1,值存在就删除//建立快慢指针,存在就不存值,fast++,不存在就*slow=*fast继续遍历#include "stdafx.h"#i原创 2014-09-07 12:58:14 · 1172 阅读 · 0 评论 -
把数组排成最小的数
// 33.cpp : 定义控制台应用程序的入口点。//剑指offer33,把数组排成最小的数//{3,32,321}打印出最小的数字321323#include "stdafx.h"#include#include#includeusing namespace std;const int g_MaxNumLen = 10;//两个数中最大数的长度//定义两个字符串用于比较原创 2014-09-06 15:07:43 · 696 阅读 · 0 评论 -
全排列和组合问题
字符串的全排列原创 2014-09-05 09:19:26 · 758 阅读 · 0 评论 -
替换空格
把字符串中的空格都替换为%20如:we are happy.we%20are%20happy.原创 2014-09-04 21:25:04 · 751 阅读 · 0 评论 -
斐波那契数列
青蛙跳台阶,可以一次1阶或2阶,n个台阶的跳法,即f()原创 2014-08-28 09:43:33 · 423 阅读 · 0 评论 -
关于海量数据处理的各种常用数据结构浅谈
关于海量数据处理的各种常用数据结构浅谈 随着互联网的兴起,越来越多的内容被放到互联网中,从而导致海量数据处理受到更多人的重视,尤其是在百度、腾讯等这些涉及海量数据的公司。下面我们简单谈一下关于海量数据处理的一些常用数据结构。包括哈希、bitmap、Bloom filter、堆、mapreduce、trie树。(1)哈希 对于哈希,相信大家都不会陌生。其基转载 2014-08-27 08:55:34 · 470 阅读 · 0 评论 -
卡特兰树
卡塔兰数卡塔兰数是组合数学中一个常出现在各种计数问题中出现的数列。由以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)命名。卡塔兰数的一般项公式为 另类递归式: h(n)=((4*n-2)/(n+1))*h(n-1);前几项为 (OEIS中的数列A000108): 1, 1, 2, 5, 14, 42, 132, 429转载 2014-08-24 08:22:05 · 751 阅读 · 0 评论 -
【c++】string类的实现
#include#includeusing namespace std;class String{public: String(); String(const char* str); String(const String& rhs);//复制构造函数 String& operator=(const String& other);//赋值操作 ~String(); cons原创 2014-08-18 12:50:52 · 472 阅读 · 0 评论 -
【算法——53】字符串02——左旋转字符串
#include "stdafx.h"#includeusing namespace std;void ReverseStr(char* pBegin,char *pEnd){ if(pBegin == NULL || pEnd == NULL) return; while(pBegin < pEnd) { char tmp = *pBegin; *pBegin = *原创 2014-08-12 08:01:42 · 437 阅读 · 0 评论 -
【编程珠玑——01】位向量
http://www.cnblogs.com/wuyuegb2312/p/3136831.html转载 2014-08-12 07:40:35 · 695 阅读 · 0 评论 -
二叉树的非递归实现
11转载 2014-08-11 09:03:08 · 378 阅读 · 0 评论 -
求二叉树第k 层的节点数
13原创 2014-08-11 09:02:37 · 2613 阅读 · 1 评论 -
判断二叉树是不是完全二叉树
11原创 2014-08-11 08:59:48 · 1207 阅读 · 0 评论 -
判断二叉树是不是AVL平衡树
11原创 2014-08-11 08:58:11 · 510 阅读 · 0 评论 -
判断两个二叉树是否结构相同
11原创 2014-08-11 08:57:29 · 899 阅读 · 0 评论 -
【笔试面试——36】二叉树03——二叉树的镜像
aa原创 2014-08-11 08:53:41 · 480 阅读 · 0 评论 -
树的子结构
11原创 2014-08-11 08:50:45 · 504 阅读 · 0 评论 -
重建二叉树
11原创 2014-08-11 08:49:44 · 455 阅读 · 0 评论 -
【笔试面试——32】判断链表环的入口
找到环的入口点当fast若与slow相遇时,slow肯定没有走遍历完链表,而fast已经在环内循环了n圈(1<=n)。假设slow走了s步,则fast走了2s步(fast步数还等于s 加上在环上多转的n圈),设环长为r,则:2s = s + nr;s= nr;设整个链表长L,入口环与相遇点距离为x,起点到环入口点的距离为a。a + x = nra + x = (n – 1)r +r = (...原创 2014-08-10 22:24:51 · 695 阅读 · 0 评论 -
【笔试面试——31】链表11——检测两个链表是否相交
11原创 2014-08-10 22:22:16 · 565 阅读 · 0 评论 -
【笔试面试——27】链表07——两个链表的第一个公共节点
马原创 2014-08-10 22:18:09 · 507 阅读 · 0 评论 -
【笔试面试——26】链表06——复杂链表的复制
11原创 2014-08-08 20:40:52 · 488 阅读 · 0 评论 -
合并两个排序的链表
剑指0ffer17原创 2014-08-07 15:01:35 · 522 阅读 · 0 评论 -
【笔试面试——24】链表04——反转链表
笔试面试24——链表04反转链表:题目分析:原创 2014-08-07 14:13:15 · 562 阅读 · 0 评论 -
链表倒数第k个节点
#include "stdafx.h"#includeusing namespace std;struct ListNode{ int data; ListNode* pNext;};//创建链表void CreatList(ListNode* &pHead,int data){ ListNode* pNewNode = new ListNode();//新建存放数据的节点原创 2014-08-07 13:07:24 · 625 阅读 · 1 评论 -
在O(1)时间内删除链表节点
链表02——在O(1)时间内删除链表节点题目:原创 2014-08-06 13:25:43 · 642 阅读 · 0 评论 -
二叉树镜像,递归和循环实现
由于递归的本质是编译器生成了一个函数调用的栈,因此用循环来完成同样任务时,最简单的办法就是用一个辅助栈来模拟递归。首先把树的头结点放入栈中。在循环中,只要栈不为空,弹出栈的栈顶结点,交换它的左右子树。如果它有左子树,把它的左子树压入栈中;如果它有右子树,把它的右子树压入栈中。这样在下次循环中就能交换它儿子结点的左右子树了。参考代码如下:void MirrorIteratively(Bina原创 2014-08-05 18:42:33 · 1344 阅读 · 0 评论