面试题
ywjun的学习笔记
这个作者很懒,什么都没留下…
展开
-
判断是否为一颗平衡二叉树
平衡二叉树,又称AVL树。它或者是一棵空树,或者是具有下列性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树的高度之差之差的绝对值不超过1。问题:判断一个二叉排序树是否是平衡二叉树这里是二叉排序树的定义解决方案:根据平衡二叉树的定义,如果任意节点的左右子树的深度相差不超过1,那这棵树就是平衡二叉树。首先编写一个计算二叉树深度的函数,利用递归实现。templat转载 2013-04-24 11:10:17 · 1151 阅读 · 0 评论 -
某公司数据库密码规定为5位组成的字符串,存储之前,需要将其加密
某公司数据库密码规定为5位组成的字符串,存储之前,需要将其加密,加密算法为:依次将每个字符依次将每个字符的ASC码值乘以2,再加上10,若计算到的新字符的值等于128,则继续将其除以3,否则不进行除法运算。最后将该得到的新字符串中所有字符前后互换(第一位和最后一位,第二位和倒数第二位交换,依次交换),编程求字符串“abcde”加密后的字符串。void Encryption(char *str){原创 2013-09-09 23:24:31 · 1817 阅读 · 0 评论 -
十进制转换为任意进制及操作符重载
十进制转换为任意进制,为了熟悉操作符重装,也加了操作符重装。包括自增(++),运算符重装(+),赋值函数重载(=),输出符(<<)原创 2013-09-05 15:37:51 · 1086 阅读 · 0 评论 -
边复习边写(树的操作)
树的创建,插入节点,前(中,后)遍历,求树的深度,判断一棵树是否为平衡二叉树,二叉树中和为某一值的路径,打印二叉树的结构原创 2013-08-28 00:15:09 · 1262 阅读 · 0 评论 -
海量数据处理系列----C++中Bitmap算法的实现
bitmap是一个十分有用的结构。所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 适用范围:可进行数据的快速查找,判重,删除,一般来说数据范围是int的10倍以下基本原理及要点:使用bit数组来表示某些元素是否存在,比如8位电话号码扩展:bloom fi转载 2013-09-05 20:50:05 · 1029 阅读 · 0 评论 -
表的联结、运算符学习笔记
表的联结、运算符学习笔记1.等值联结两个表的相同列的值必须相等。等值联结也称为 简单联结 或 内联结2.非等值联结非等值联结是包含非等号运算符的联结条件3.外联结通过外联结返回不直接匹配的记录。外联结运算符只能出现在表达式的一侧,即缺少信息的那一侧。他将从一个表中返回在另一个表中没有直接匹配的行。包含外联结的条件不能用IN 运算符,也不能通过OR运算符链接到另一转载 2013-09-05 21:03:45 · 784 阅读 · 0 评论 -
打印所有的组合(组合问题C++实现)
写一个程序,打印出以下的序列。(a),(b),(c),(d),(e)........(z)(a,b),(a,c),(a,d),(a,e)......(a,z),(b,c),(b,d).....(b,z),(c,d).....(y,z)(a,b,c),(a,b,d)....(a,b,z),(a,c,d)....(x,y,z)....(a,b,c,d,.....x,y,z)原创 2013-09-05 22:44:25 · 3371 阅读 · 0 评论 -
边看边写(打印1到最大的n位数)
注:之前写了使用大数打印的方法 #region 打印1到最大的n位数 /// /// 输入数字n,按顺序打印出从1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。 /// 使用递归算法实现,以及使用字符排列的方式,如对000~999进行全排列。 /// class MaxOfDigital {原创 2013-08-28 22:43:30 · 1576 阅读 · 3 评论 -
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数
巧排数字,将1,2,...,19,20这20个数字排成一排,使得相邻的两个数字之和为一个素数,且首尾两数字之和也为一个素数。编程打印出所有的排法。排序方法:以贪心算法进行搜索,由于两个数字之和是一个素数,且首尾两数字之和也为一个素数,因此只需要找出以1开头的排列就可以了。使用贪心算法的同时使用回溯法,当遇到相邻两个数的时候就回溯到上一步从新搜索。ofstream fout("D://P原创 2013-09-15 23:10:38 · 5985 阅读 · 0 评论 -
不适用Sqrt函数开方,精度小于指定精度
#includeusing namespace std;//template//想法(通过迭代计算出A的开方)://迭代公式: X(n+1)=X(n)+(A/X(n)-X(n))/2,其中A是输入的待求被开方的数,X(n)是一次与A的开方相近的数,X(n+1)是下一次与A的开方相近的数//①找出需要被开方数A的位数k,则其开方B的值介于有k/2(取上整)位的最大值max和最小值min之原创 2013-09-18 11:15:48 · 4813 阅读 · 0 评论 -
关于f(n)=n的几种算法
题目:有一个整数n,写一个函数f(n),返回0到n之间出现的"1"的个数。比如f(13)=6,现在f(1)=1,问下一个最大的f(n)=n的n是什么?/*p228面试题5Consider a function which, for a given whole number n, returns the number of ones required when writing out转载 2013-07-30 16:52:18 · 3593 阅读 · 0 评论 -
边看边写(二)
#region 用两个栈实现队列的功能 class CQueue where T : IComparable { private Stack enterQ = new Stack(); private Stack outQ = new Stack(); public void AppendTail(T data)原创 2013-08-28 20:17:19 · 1093 阅读 · 0 评论 -
输入一个正数n,输出所有和为n连续正数序列。
思想:因为是n个连续的序列,因此,设整数n为y,y由i个数组成,初始值为x,则有x+x+1+...+x+(i-1)=y,因此有 x=(2* y - i*(i-1))/(2*i),若x是整数,则可以由以x开始的i个数组成。由于,没有仔细算过n的取值范围,所以暂时去[2,y/2],希望各位给出范围建议。#includeusing namespace std;void continusSeque原创 2013-04-28 21:25:59 · 1416 阅读 · 0 评论 -
树的遍历、深度、平衡树
#include#include#include#includeusing namespace std;#define Len 10templatestruct Tree{ T data; Tree *Left; Tree *Right; public: Tree():Left(0),Right(0){};};void show(const Tree &t);boo原创 2013-05-03 09:49:15 · 1126 阅读 · 0 评论 -
输入一个数n,输出1,2,3,...,9999(n个9)(利用大数求解)
#include#include#include#includeusing namespace std;class bigInt{ public: bigInt(){} bigInt(const bigInt &data):v(data.v) {} bigInt(string s) { int len =s.size(); while(len) {原创 2013-05-05 18:55:43 · 2366 阅读 · 0 评论 -
螺旋矩阵(由外自内旋转)
如矩阵:12 3 4 51617 18 19 61524 25 20 71423 22 21 81312 11 10 9找出规律,并打印出一个N*N的矩阵;规律就是从首坐标开始顺时针一次增大。(题目出自程序员面试宝典第三版)注:由于觉得书上的程序比较的复杂因此使用自己的方法。//_OUTSIDESPIN.H_#ifndef原创 2013-07-22 22:13:04 · 2526 阅读 · 0 评论 -
螺旋队列问题(由内自外旋转)
21 22.....................20 7 8 9 1019 6 1 2 1118 5 4 3 1217 16 15 14 13#include#includeusing namespace std;class InsideSpin {public: InsideSpin(); int Max(int x,int y);原创 2013-07-22 19:50:17 · 1524 阅读 · 0 评论 -
zigzag数组
#includeusing namespace std;class ZigArray{ public: ZigArray(); ZigArray(int); void PrintZigArray(); ~ZigArray(); private : int n; int **z;};ZigArray::ZigArray(int num):n(num){ z = n原创 2013-07-21 20:08:47 · 2207 阅读 · 0 评论 -
求一个字符串中连续出现次数最多的子串
#include "stdafx.h"#include#include#includeusing namespace std;/*基本算法描述: 给出一个字符串abababa 1.穷举出所有的后缀子串 substrs[0] = abababa; substrs[1] = bababa; substrs[2] = ababa原创 2013-08-23 16:11:29 · 996 阅读 · 0 评论 -
边看边写(调整数组顺序使奇数位于偶数前面)
#region 调整数组顺序使奇数位于偶数前面 /// /// 输入一个 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分 /// Reorder中array为待排序的数组,使用组合的方式调用使用何种方法进行排序(如奇数在前,偶数在后,或能被3整除的数在前,不能被3整除的数在后) /// clas原创 2013-08-29 09:37:16 · 1834 阅读 · 0 评论 -
在O(1)时间删除指定链表结点
#region 在O(1)时间删除指定链表结点 /// /// 给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。 /// /// class MyList where T:IComparable { private T _data; private MyList _next;原创 2013-08-28 23:39:16 · 995 阅读 · 0 评论 -
不存储数据流的前提下,从输入流中获得这 n 个等概率的随机数据
有一个很大很大的输入流,大到没有存储器可以将其存储下来, 而且只输入一次,如何从这个输入流中随机取得n 个记录。采用何种方法,才能在不需要存储数据流的基础上,获得这 n个等概率的随机数据呢?That is, If m<=n, just keep it. For m>n, generate a random number R=rand(m) in [0, m), replace a[R]原创 2013-09-20 16:41:12 · 2250 阅读 · 0 评论