自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(39)
  • 收藏
  • 关注

原创 objective-c类初始化

并不一定要要为自己的类创建初始化函数。如果不需要设置任何状态 或者alloc方法将内存清零的默认行为相当不错 则不必去在意init方法如果创建了一个指定初始化函数 则一定要在自己的指定的初始化函数中调用超类的指定初始化函数如果初始化函数不止一个 则需要选择一个指定初始化函数 被选定的初始化函数应当调用超类的指定初始化函数 要按照指定初始化函数的形式实现所有的初始化函数@proper

2015-06-30 15:57:53 471

原创 求1+2+...+n

题目:求1+2+。。+n 要求不能使用乘除法 for while if else switch case等关键字及条件判断语句 (A?B:C)思路1:定义一个类型 接着创建n个该类型的实例 那么这个类型的构造函数将确定会被调用n次将累加相关的代码放到构造函数中#include using namespace std;class Temp {private:

2015-06-16 17:10:41 468

原创 圆圈中最后剩下的数字

题目:0.1....n-1这n个数字排成一个圆圈 从数字0开始每次从这个圆圈里删除第m个数字 求出这个圆圈里剩下的最后一个数字int lastnum( int n, int m){ if (n < 1 || m < 1) return false; list Listnum; for (int i = 0;i < n;i++) Listnum.push_back

2015-06-16 15:05:48 322

原创 扑克牌的顺子

题目:从扑克牌中随机抽5张牌 判断是不是一个顺子即这5张牌是不是连续的 2-10为数字本身 A为1 J为11 Q为12 K为13 而大小王可以看成任意数字思路:可以把5张牌看成由5个数字组成的数组 大小王是特殊的数字 不妨把它定义为0 接下来就是怎么判断这5个数字是否连续 可以用排序的方法由于0可以当做是任意数字 可以用0去补满数组中的孔雀 如果排序后的数组不是连续

2015-06-16 14:51:06 421

原创 n个骰子的点数

题目:把n个骰子扔在地上 所有骰子朝上一面的点数之和为s 输入n 打印出s的所有可能出现的概率思路:将n个骰子分为两堆  第一堆只有一个 另一个有n-1个 单独的那一个有6中可能 需要计算从1到6的每一种点数 和剩下的n-1个骰子 来计算点数 和 接下来把剩下的n-1个骰子还是分成两堆 第一堆只有一个 第二堆有n-2个 把上一轮单独骰子的点数和这一轮单独骰子点数相加 再和剩下的n-

2015-06-16 11:54:58 333

原创 翻转单词顺序VS左旋转字符串

题目:输入一个英文句子 翻转句子中单词的顺序 但单词内字符的顺序不变 为了简单起见 标点符号和普通字母一样处理例如“I am a student. " 则输出”student. a am I"思路:先翻转句子 再翻转句子中的每个单词 #include using namespace std;void reserve(char *start, char

2015-06-15 22:45:21 371

原创 二叉树的深度

题目:输入一颗二叉树的根结点 求该树的深度  从根结点到叶节点一次经过的节点(含根、叶结点)形成树的一条路径 最长路径为树的深度二叉树的节点定义如下:typedef struct BinaryTreeNode{int m_nValue;BinaryTreeNode* m_pLeft;BinaryTreeNode* m_pRight;};int max(int a, int b)

2015-06-15 21:01:36 367

原创 数字在排序数组中出现的次数

题目:统计一个数字在排序数组中出现的次数 列如输入排序数组{1 2 3 3 3 3 4 5}和数字3 输出4排序数组  可以用二分查找 查找输入的数字在数组中第一次出现的位置以及最后一次出现的位置#include using namespace std;int find1(int *A, int a, int b, int num){ if (a > b)

2015-06-15 20:39:56 330

原创 第一个只出现一次的字符

题目:在字符串中找出第一个只出现一次的字符 如输入“abaccdeff" 则输出‘b'从前向后遍历每一个字符 然后将当前字符与后面的每个字符比较 如果发现没有重复的字符则该字符就只出现一次 时间复杂度为O(n*n)我们可以统计每个字符出现的次数 需要一个数据容器来统计每个字符的出现次数 #include #include using namespace std;i

2015-06-14 11:10:03 319

原创 丑数

题目:把只包含因子2、3和5的数称作丑数 求按从小到大的顺序的第1500个丑数(第一个丑数为1)从1 开始遍历 每一个数 若n因式分解只包含2、3、5这三个因子,即使n%2 n%3 n%5最后余数为0 则说明n为丑数这样做会导致1500个丑数之前的每个数都需要遍历---------------------------------分析:第一个丑数为1 接着为2,3,4,5,6,。

2015-06-14 11:00:45 376

转载 用qsort对字符串数组排序需要注意的几个问题

qsort是万能数组排序函数,必须要学会使用,简单的数组自然不用说,这里主要讨论一下字符串数组的使用。  首先看一下qsort的原型:    void qsort(void *base, size_t nmemb, size_t size, int(*compar)(const void *, const void *));  正确使用这个函数要注意几点:1.b

2015-06-13 18:09:59 675

原创 把数组排成最小的数

题目:输入一个正整数数组  把

2015-06-13 18:03:55 280

原创 最小的K个数

题目:输入n个整数 找出其中最小的K个数 例如输入 4 5 1 6 2 7 3 8 这8个数字 最小的4个数字是 1 2 3 4解法1:排序 算法的时间复杂度为O(nlogn)解法2:快速排序 查找第k个大的数 算法的时间复杂度为O(logn)#include #include using namespace std;int partion(int

2015-06-12 16:51:31 289

原创 数组中出现次数超过一半的数字

题目: 数组中有一个数组出现的次数超过数组长度的一半 请找出这个数字解法1:最直观的方法是对数组进行排序 如果排好序就很容易计算出每个数字出现的次数 排序的时间复杂度为O(nlogn) 解法2: 如果对这个数组排序 要找出出现次数超过数组长度一半的数字 这个输液就是长度为n的数组第n/2大的数字 即中位数          可以用快速排序的方法找出任意第K大的数字 算法复杂度为

2015-06-12 15:51:15 397

原创 字符串的排列

题目:输入一个字符串 打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a、b、c所能排列出来的所有字符串打印abc 所有排列组合可以将第一位看做为a.然后分别于剩余的两位b、c进行交换得到bac bca 接着对只有两位的字符串进行交换 将第一位于剩余的位进行交换因此 递归的将第一位与其余位进行交换#include #include using

2015-06-11 14:27:28 370

原创 二叉搜索树与双向链表

题目:输入一颗二叉搜索树 将该二叉搜索树转换成一个排序的双向链表 要求不能创建任何新的结点 只能调整树中及诶单指针的指向二叉树结点定义如下:BinaryTreeNode* bulidlist(BinaryTreeNode *root){//返回的是链表的尾结点 if (root==NULL) return; if(root->m_pLeft==NULL && root->m_pR

2015-06-11 14:26:45 353

原创 二叉树中和为某一值的路径

题目:输入一颗二叉树和一个整数 打印出二叉树中结点值的和为输入整数的所有路径 从输的根节点开始往下一直到叶节点所经过的节点构成一条路径二叉树的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;};当用前序遍历方式访问到某一个结点时  我们

2015-06-11 11:20:44 341

原创 二叉搜索树的后续遍历序列

题目:输入一个整数数组 判断该数组是不是某二叉搜索树的后续遍历结果 如果是则返回true 否咋返回false 假设输入数字的任意两个数字都互不相同后序遍历是左->右->根       左数组最后一个值t为根结点的值数组中小于t的为树的左孩子 之后的应当为右孩子 且所有的右孩子大于根t 若存在不大于t的值 则表明不是二叉搜索树的后序遍历顺序然后递归判断左孩子和右孩子是

2015-06-11 11:19:41 291

原创 从上往下打印二叉树

题目:从上往下打印出二叉树的每个结点 同一层的结点按照从左到右的顺序打印从上到下从左到右即层次遍历二叉树void visit(BinaryTreeNode *root){ if(root!=NULL) { s.push(root); BinaryTreeNode *t=NULL; while(s.size()) { t=s.front();

2015-06-11 09:54:40 329

原创 Reservoir Sampling

蓄水池算法~~~

2015-06-10 23:15:49 305

原创 栈的压入、弹出顺序

题目:输入两个整数序列 第一个序列表示栈的压入顺序 请判断二个序列是否为该栈的弹出顺序。假设压入展的所有数字均不相同 例如序列1/2/3/4/5是某栈的压栈序列 序列4、5/3/2/1 是该压栈序列对应的一个弹栈序列 但4、3、5、1、2就不是#include #include using namespace std;stack s;bool Isoroder(int *A

2015-06-10 21:07:38 330

原创 包含min函数的栈

题目:定义栈的数据结构 请在该类型中实现一个能够得到栈的最小值的min函数 在该栈中 调用min、push及pop的时间复杂度都是O(1)#include #include #include using namespace std;template struct stackmin{ stack s1; stack s2; void push(T a); void p

2015-06-10 20:42:26 262

原创 顺时针打印矩阵

题目:输入一个矩阵 按照从外向量以顺时针的顺序依次打印出每一个数字 #include using namespace std;int main(){ int n; cin>>n; int **A=(int **)malloc(sizeof(int *)*n); for(int i=0;i<n;i++) A[i]=(int *)malloc(sizeof(int )*

2015-06-10 20:40:28 341

原创 二叉树的镜像

题目:请按成一个函数 输入一个二叉树 该函数输出它的镜像二叉树结点的定义如下:struct BinaryTreeNode{ int m_nValue; BinaryTreeNode * m_pLeft; BinaryTreeNode * m_pRight;};先序遍历二叉树 如果该结点不是叶子结点 则交换其左右孩子 当交换完所有非叶子结点 就得到了镜像的二叉树

2015-06-10 17:01:04 330

原创 树的子结构

题目:输入两颗二叉树A和B 判断B是不是A的子结构 二叉树结点定义如下;首先 从树根开始遍历树如果结点与 B的根结点值相同 则继续遍历A的左子树 以及B的左子树 如果左子树相同则遍历A的右子树以及B的左子树 如果左右子树都相同则 A包含B如果结点与B的根节点值不同 则遍历到A的左孩子 重复上述判断做孩子是否含有B 如果左子树不含有B 则遍历到A的右子树 判断其是否含有B

2015-06-10 16:48:40 314

原创 合并两个排序的链表

题目:输入两个递增排序的链表 合并这两个链表并使心里暗标中的结点仍然是按照递增的排序 链表结点的定义如下:struct ListNode{int m_nValue;ListNode *m_pNext;};#include using namespace std;struct ListNode{int m_nValue;ListNode *

2015-06-10 16:04:23 429

原创 反转链表

题目:定义一个函数 输入一个链表的头结点 翻转该链表并输出翻转后链表的头结点 链表定义如下struct ListNode{int m_nValue;ListNode *m_pNext;}ListNode*reserve(ListNode *Lhead){ if(Lhead==NULL) { throw std::exception("Error ~!");

2015-06-10 15:21:49 276

原创 链表中倒数第K个结点

题目:输入一个链表 输出该链表中倒数第K个结点 从1开始计数 即链表的尾结点是倒数第1个结点 如一个链表有6个结点从头结点开始他们的值一次为1 2 3 4 5 6 这个链表的倒数第3个结点值为4链表结点定义如下:struct ListNode{int m_nValue;ListNode *m_pNext;};-----------------

2015-06-09 18:29:20 256

原创 调整数组顺序使奇数位于偶数前面

题目:输入一个整数数组 实现一个函数用来调整该数组中数字的顺序 使得所有奇数位于数组的前半部分 偶数位于数组的后半部分#include using namespace std;void exchange(int *a,int n){ int low=0; int high=n-1; int t=0; if(a==NULL || n==0) throw std::exc

2015-06-09 16:44:54 308

原创 打印1到最大的n位数

题目:输入数字n 按顺序打印出从1最大的n为十进制数 比如输入3 则打印出1 2 3 一直到最大的3位数即999考虑到大数 应当使用字符串打印数字 何时打印停止 可以使用strcmp与n位最大的数9999...9比较 但每次比较时间复杂度为O(N)只有999....9加1时高位才会产生进位 因此可以判断最高位是否有进位来控制打印停止bool isov

2015-06-09 16:14:44 354

原创 数值的整数次方

题目:实现函数double power(double base,int exponent),求base的exponent次方 不得使用库函数  同时不需要考虑大数问题考虑到base 为0 或者指数为0时 无意义base为1时返回base 指数为负数时返回 倒数 bool equal(double n1,double n2)//浮点数比较大小~~~~{ if(abs(n1-n2)

2015-06-09 11:00:48 299

原创 斐波那契数列

题目:写一个函数 输入n 求斐波那契数列的第n项 斐波那契数列定义如下: f(n)=0   n=0f(n)=1    n=1f(n)=f(n-1)+f(n-2) n>1

2015-06-09 10:15:00 424

原创 旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾 称之为数组的旋转 输入一个递增排序的数组的一个旋转 输出旋转数组的最小元素例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转 该数组最小元素为1#include using namespace std;int a[]={3,4,5,1,2,3};int n=5;int findbyorder(int *a,int low,i

2015-06-09 10:09:18 332

原创 用两个栈实现队列

题目:用两个栈实现一个队列 队列的声明如下 请实现它的两个函数appendTail 和deleteHead 分别完成在队列尾部插入结点和队列的头部删除结点的功能栈中元素先进后出 队列中元素先进先出 假设队列q ,元素1 2 3 先后进入队列 123   如果栈s1 中 1 2 3 先后进入栈

2015-06-06 17:08:34 363

原创 重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果 请重建出该二叉树 假设输入的前序遍历和中序遍历的结果中都不含重复的数字 例如输入的前序遍历{1,2,4,7,3,5,6,8,}和中序遍历{4,7,2,1,5,3,8,6} 则重建出来的二叉树如图所示 并输出他们的头结点 二叉树的节点定义如下struct BinaryTreeNode{ int m_nValue; B

2015-06-06 16:58:05 373

原创 从尾到头打印链表

题目:输入一个链表的头结点 从尾到头反过来打印出每个结点的值从头到尾遍历链表 然后将遍历结果压入栈 最后弹出栈的顺序即为从尾到头遍历顺序 while(p!=NULL) { s.push(p); p=p->m_pNext; } while(s.size()) { coutm_nKey<<' '; s.pop(); }假设链表结点为

2015-06-06 14:20:49 288

原创 替换空格

题目:请实现一个函数 把字符串中的每个空格替换成“%20”,例如输入“we are happy."则输出”we%20are%20happy."从前向后 可以遍历字符串遇到空格则将空格后的字符移动两位并替换为%20 但是这种方法时间复杂度为O(N*N)从后向前?遍历一遍字符串可以知道字符串中空格的个数 比如“we are happy."中 字符串长度为14(包括结

2015-06-06 14:04:32 355

原创 二维数组中的查找

题目:在一个二维数组中 每一行都按从左到右递增的顺序排序 每一列都按照从上到下递增的顺序排序 请完成一个函数 输入这样一个二维数组和一个整数 判断数组中是否含有该整数128924912471013681115假设要查找的是7 如上图的一个二维数组  每一行从左到右递增  

2015-06-06 13:27:48 278

原创 赋值运算符函数

题目:如下为类型CMyString 的声明 请为该类型添加赋值运算符函数class CMyString{public: CMyString (char *pData=NULL); CMyString (const CMyString & str); CMyString & operator=(const CMyString &str) ; ~CMyString(void);pr

2015-06-05 22:12:15 285

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除