剑指offer
cm_cyj_1116
学习中
展开
-
栈和队列的相互实现
栈和队列的相互实现算法: 代码:两个栈实现一个队列: //题目:使用两个栈实现一个队列 #pragma once #include #include using namespace std; template class Queue { public: stack stack1; stack stack2; public: Queue() {} ~Queue() {}原创 2017-03-18 22:44:44 · 650 阅读 · 0 评论 -
找出数组中的“单身狗”
(一)数组中的元素除一个只出现一次外,其余均成对出现,找出这个只出现一次的元素; 算法:对于数组中的所有元素进行异或操作,便可得到这条单身狗; (二)数组中的元素除了两个只出现一次外,其余均出现一次,找出这两个只出现一次的元素; 算法 : (1)对于数组中的所有元素进行异或处理,得到异或的结果result; (2)找到resu原创 2017-03-17 09:11:41 · 1525 阅读 · 2 评论 -
数组中重复的数字
题目:在一个长度为n的数组里的所有数字都在0-n-1的 范围内。数组中某些数字是重复的,但是不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3. 解法1:对于数组进行排序,之后对于已经排序的数组进行遍历便可知道数组中重复的数字。 时间复杂度;O(nlogn); 解法原创 2017-03-15 09:22:16 · 900 阅读 · 2 评论 -
打印1到最大的N位数
题目:输入数字n,按顺序打印出从1到到最大的n位十进制数。例如:输入3,则打印出1,2,3一直到最大的三位数999; 思路:(1)对于n位数,可以用int或者long long存储时,直接计算打印即可; (2)对于n位数,用int 或者long long都存储不了时,这便是一个大数问题; 大数问题:字符串表示法和数组表示法; //当数字不足够大的时候,使用原创 2017-04-10 09:36:17 · 700 阅读 · 0 评论 -
位运算相关面试题
面试题一:在Excel2003中,用A表示第一列,B表示第二列...........Z表示第26列,AA表示第27列,AB表示第28列..............以此类推。请写出一个函数,输入字母表示的列好编码,输出她是第几列。 思路:把十进制数字用A-Z表示成二十六进制。 面试题二:二进制中1的个数 题目:请实现一个函数,输入一个整数,输出该数二进制表示中1的个数。例如把9表示成二进制位1原创 2017-03-22 12:12:07 · 743 阅读 · 0 评论 -
旋转数组中的最小数字
面试题8:旋转数组的最小数字 题目:把一个数组的最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增数组的旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1. 算法: (1)当输入的旋转数组非法时:处理! (2)当输入的旋转数组正常时,index1 = 0;index2=length-1: a:如果ar原创 2017-03-21 23:26:08 · 709 阅读 · 0 评论 -
重建二叉树
题目:输入某二叉树的前序遍历结果和中序遍历结果,请重建出该二叉树。 假设输入的前序遍历结果和中序遍历结果都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出该二叉树,并输出头结点。原创 2017-03-20 18:23:24 · 529 阅读 · 0 评论 -
从尾到头打印单链表
题目:输入一个链表的头结点,从尾到头反过来打印每个节点的值。 链表节点的定义: typedef struct LinkNode { int _value; struct LinkNode* _next; }LinkNode,*pLinkNode; 链表定义: typedef struct LinkList { LinkNode* _phead; }LinkList,*pLinkLis原创 2017-03-19 18:16:13 · 1087 阅读 · 2 评论 -
替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如:输入“we are happy.”则输出“we%20are%20happy.”。 #include #include #include using namespace std; //思路分析: //1.对于字符串数组,将其中出现的空格置换为%20,也就是%和空格的ASCII码值; //1.判断数组的大小是否大于字符的个数+2*Co原创 2016-12-15 22:42:02 · 340 阅读 · 0 评论 -
调整数组顺序使奇数位于偶数前面
面试题14:调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有奇数位于数组的前半部分,所有偶数位于奇数的后半部分; 思路:(1)维护两个指针分别指向数组的头和尾; (2)移动两个指针,当头指针指向的数字为偶数并且尾指针指向的数字为奇数时;交换两个指针指向的值; (3)以此进行,直到头指针等原创 2017-04-13 19:54:59 · 446 阅读 · 0 评论