自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 搜狐笔试之Kolakoski序列

题目描述:Kolakoski序列是自生成的无限序列,例如,当给定数组是[1,2]的时候,Kolakoski序列是这样的:[1,2,2,1,1,2,1,2,2,1,2,2,1,1,2,1,1,2,2,1,2,1,1,2,1,2,2,1,1...],如果我们将相邻的相同数字分成一组,那么将会得到:[[1],[2,2],[1,1],[2],[1],[2,2],[1],[2,2],[1,1],

2017-08-28 22:06:13 480

原创 合并两个有序链表

题目描述:输入两个递增排序的链表,合并这两个链表,并使新链表中的结点仍然按照递增排序。思路分析:代码:#include#includeusing namespace std;//不带头结点的单向链表struct Node{ int data; Node *next;};bool Insert_tail(Node **list,int value)//尾插

2017-08-25 12:54:19 269

原创 判断单链表是否成环形

题目描述:判断一个单向链表是否形成环形结构;思路分析:定义一个快慢指针,快指针一次走两步,慢指针一次走一步,如果链表有环,则一定可以相遇。代码实现:#includeusing namespace std;struct Node{ int data; Node *next;};bool Insert_tail(Node **list,int value)//尾插{

2017-08-25 12:27:33 354

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

题目描述:输入一个单链表,输出该链表中的倒数第k个结点。思路分析:单链表不可能回退嘛,所以就考虑用两个指针。代码分析:#includeusing namespace std;struct Node{ int data; Node *next;};bool Insert_tail(Node *list,int value)//尾插{ if(l

2017-08-25 11:42:37 251

原创 奇数在前偶数在后

题目描述:输入一个整数数组,调整数组的顺序,使得奇数在前,偶数在后 思路分析:可按照快排的思想进行分析,如下:代码如下:#includeusing namespace std;void Sort(int *arr,int len)//奇数在前,偶数在后{ if(arr == NULL || len<=0) { return; } int low = 0;

2017-08-24 22:39:20 872

原创 在O(1)时间删除链表结点

题目描述:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点; 思路分析:代码分析:#includeusing namespace std;struct ListNode { int value; ListNode *next;};bool Insert_head(ListNode *list,int value) //头插{ if(li

2017-08-24 19:59:25 250

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

题目描述:输入数字n,按顺序打印从到最大的n位十进制数。题目分析:1、要考虑大数的情况;2、可以用两种方式解决这个问题,一种是字符串,从低位依次加1,遇9进位,另一种是递归,每位的情况都是0-9,从高位开始递归;代码分析:#includeusing namespace std;//第一种方法:用字符串的方式,依次从低位加,每次加1,遇到9就进位。void Show(char *

2017-08-24 18:42:42 207

原创 数值的整数次方

题目描述:实现函数double Power(double base,int exponment),求base的exponment次方,不得使用库函数,不需要考虑大数问题。题目分析:代码分析:#includeusing namespace std;bool equal(double base,double num)//double类型数字的比较{ if((base -

2017-08-24 14:12:29 247

原创 判断一个数字是不是2的整数次方

题目描述:用一条语句判断一个整数是不是2的整数次方。 题目分析:2的整数次方的特点就是二进制中有一个1,思路就是这个数与比它小一个数相与,如果为0,则证明为真,特例有:1和负数需要处理。代码如下:#includeusing namespace std;//判断一个数是不是2的整数次数bool IsTwo(int num){ if(num == 1) //处理1 { r

2017-08-24 12:46:07 606

原创 二进制中1的个数

题目描述:实现一个函数,输入一个整数,输出该数二进制中1的个数。 过程分析:代码实现:#includeusing namespace std;int GetOneNum_1(int n) //第一种方法:标志位移动{ int count = 0; unsigned int flag = 1; while(flag) { if(n & flag) {

2017-08-24 12:07:56 173

原创 大数的乘法

题目:大数*大数,顾名思义,大数即为很大很大的数啦,一般来说呢,它是由char*的形式存储的,毕竟char的字节数只有1嘛,具体流程呢,如下所示:代码呢,如下:#include#includeusing namespace std;#define SIZE 1024void Reverse(char *str) //逆置字符串{ if(str == NULL )

2017-08-21 17:37:03 197

原创 二分查找法(递归+循环)

二分查找法,它的使用前提是数列是有序的,思想就是呢,先给中间的数做个标记,如果你要找的值比它小呢,你就往左找咯,反之亦然,然后再找中间数,一直重复啦~#includeusing namespace std;//////////////////////递归////////////////////////int Search(int *arr,int left,int right,int

2017-08-17 19:50:12 265

原创 两个栈实现一个队列&&两个队列实现一个栈

1、两个栈实现一个队列,思路如下:代码如下:#include#include#includeusing namespace std;template class CQueue{public: CQueue(void){} ~CQueue(void){} void appendTail(const T& node); T deleteHead();pri

2017-08-16 20:35:50 185

原创 二叉树的前中后层次遍历(递归+非递归)、创建树(数组、前序+中序、中序加后序)

二叉树是数据结构中特别重要的知识点哦,先就其几个简单功能加以实现,都是基础哦~一、创建树1、根据数组构造一棵树 造成排序二叉树2、根据前序和中序构造一棵树 (根左右 和 左根右)3、根据中序和后序构造一棵树(左根右 和 左右根)二、遍历树1、前序遍历(递归)2、前序遍历(非递归)3、中序遍历(递归)4、中序遍历(非递归)5、后序遍历(递归)6、后

2017-08-16 14:41:20 425

原创 斐波那契数列的实现

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……代码实现:#includeusing namespace std;//1、1、2、3、5、8、13、21、34、……int

2017-08-04 20:30:54 275

原创 关于链表的插入、删除和逆置

链式存储:非连续内存存储,方便插入、删除。一般来说简单的链表,节点会有两个域,数据域和next域,next域一般指向下一个节点的位置。关于它的一些函数操作如下所示:#include#includeusing namespace std;//带头节点的单链表struct Node{ int data; Node *next;};bool Insert_head(Node *

2017-08-04 20:11:34 297

原创 有序数组的合并

#includeusing namespace std;#define SIZE 1024/*1、如果可以申请辅助空间,那么从前从后倒是没什么所谓吧,这就像是归并的一次归并了。*/void Merge_1(int *arr,int lenarr,int *brr,int lenbrr){ if(brr == NULL)//如果brr为空,则没有合并的必要 return; if(

2017-08-04 16:56:14 276 1

原创 字符串的替换空格问题

题目:把字符串中的空格替换成%20,例如 “we are happy”替换成“we%20are%20happy”;思路分析:如果从头遍历,遇到空格就替换,则后面整个串都要移动,这样下来,时间复杂度就会很大,那么,为何不考虑从后往前替换呢。#include#include//把空格替换成%20//两种方法:1、创建一个新的数组//2、在原有数组上进行更改char* ReplaceBla

2017-08-04 16:18:11 252

原创 二维数组的查找问题

题目:一个二维数组,每一行都按照从左到右递增,每一列都按照从上到下递增,查找一个数是否存在于二维数组中思路:代码如下:#include//bool Find(int (*p)[5]){}//以前习惯于将二维数组的传递这样写,可是这样并不好,因为[]里无法给变量//学会善于利用一维数组解决 rows:行 columns:列 number:要查找的数bool Find(int

2017-08-04 16:08:21 223

原创 赋值运算符的重载函数

赋值运算符的重载函数:一定要注意避免发生浅拷贝(即多个指针指向同一块内存),赋值运算符一般是指给一个已经存在的对象赋上新的值,很容易发生浅拷贝现象,所以一定要注意哦。代码如下:#include#includeusing namespace std;class CMyString{public: CMyString(char *pdata = NULL) {

2017-08-04 16:02:55 277

空空如也

空空如也

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

TA关注的人

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