刷题
冠切云之崔嵬
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题7——重建二叉树
题目描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。题目分析/** * Definition for binary tree * struct TreeNode { * int v...原创 2019-07-02 00:04:31 · 101 阅读 · 0 评论 -
剑指offer面试题11——旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目分析class Solution {public: int minNumberInRo...原创 2019-08-14 11:53:31 · 94 阅读 · 0 评论 -
笔试1
#include <iostream>#include <vector>#include <set>using namespace std;int count(vector<int> &A){ set<int> s; int n=0; for(int i=0; i<A.size(); ...原创 2019-08-11 16:51:52 · 117 阅读 · 0 评论 -
剑指offer面试题24——反转链表
题目描述输入一个链表,反转链表后,输出新链表的表头。题目分析class Solution {public: ListNode* ReverseList(ListNode* pHead) { ListNode* pNode = pHead; ListNode* pPrev = nullptr; ListNode* Reverse...原创 2019-08-17 23:56:40 · 102 阅读 · 0 评论 -
笔试2
1、输入一个字符串,找出优先级最大的N个数字输出。偶数优先级比奇数大;数字越大优先级越高。输入示例:555503,772867,756893,339138,399447,40662,859037,628085,855723,974471,599631,636153,581541,174761,948135,411485,554033,858627,402833,546467,57436...原创 2019-09-01 19:17:12 · 140 阅读 · 0 评论 -
判断两个链表是否相交(考虑带环和不带环)
链接:https://blog.csdn.net/sinat_36490286/article/details/75268800转载 2019-09-07 13:55:05 · 108 阅读 · 0 评论 -
剑指offer23——链表中环的入口节点
判断单链表中有没有环,如果有找到环的入口节点。三个问题:1、如何确定链表中包含环:两个指针,一个指针一次走一步,一个指针一次走两步。如果走得快的指针追上了走得慢的指针,则说明链表包含环; 如果走得快的指针走到了链表末尾(p->next == NULL)都没有追上第一个指针,则无环。2、如何找到环的入口:定义两个指针p1,p2指向头结点,如果环有n个结点, 则p1先移动n步,...原创 2019-09-10 10:50:30 · 114 阅读 · 0 评论 -
剑指offer12——矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占...原创 2019-09-16 17:08:35 · 100 阅读 · 0 评论 -
剑指offer13——机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?题目分析class Sol...原创 2019-09-16 17:49:05 · 89 阅读 · 0 评论 -
笔试3
原创 2019-09-16 20:53:26 · 113 阅读 · 0 评论 -
剑指offer面试题22——链表中倒数第k个节点
题目描述输入一个链表,输出该链表中倒数第k个结点。题目分析要注意三点:1、输入的头指针为空2、链表节点总数少于k3、输入的k=0:k是无符号整数,k-1得到的不是-1,而是4294967295,是无符号的0xFFFFFFFF,可能造成程序崩溃。/*struct ListNode { int val; struct ListNode *next; ListNod...原创 2019-08-14 10:53:40 · 118 阅读 · 0 评论 -
剑指offer面试题21——调整数组顺序使奇数位于偶数前面
题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。class Solution {public: void reOrderArray(vector<int> &array) { vector<int> ar...原创 2019-08-04 23:17:10 · 137 阅读 · 0 评论 -
剑指offer面试题9——用两个栈实现队列
题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。题目分析class Solution{public: void push(int node) { stack1.push(node); } int pop() { int top; if(stack2.empty()...原创 2019-07-02 23:35:08 · 86 阅读 · 0 评论 -
剑指offer面试题15——二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题目分析1、可能引起死循环的解法:基本思路:先判断整数二进制表示中最右边一位是不是1,接着把输入的整数右移一位,此时原来处于从右边数起第二位被移到最右边了,再判断是不是1,这样每移次动一位,知道整个整数变成0为止。那么,如何判断一个整数的最右边是不是1呢? 如果一个整数与1做与运算的结果是1,则表示该整数最...原创 2019-07-08 22:24:00 · 164 阅读 · 0 评论 -
剑指offer面试题10——菲波那切数列
题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39题目分析通常做法:class Solution {public: int Fibonacci(int n) { if(n<2) return n==0 ? 0 : 1; retu...原创 2019-07-03 20:42:03 · 185 阅读 · 0 评论 -
剑指offer面试题4:二维数组中的查找
题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。题目分析首先选取数组中右上角的数字,如果该数字等于要查找的数字,则查找过程结束;如果该数字大于要查找的数字,则剔除这个数字所在列;如果该数字小于要查找的数字,则剔除这个数字所在行。c...原创 2019-06-28 22:28:29 · 89 阅读 · 0 评论 -
剑指offer面试题16——数值的整数次方
题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。题目分析//使用库函数pow()class Solution {public: double Power(double base, int exponent) { double result = pow(base, exponent); ...原创 2019-07-09 23:30:43 · 104 阅读 · 0 评论 -
剑指offer面试题5——替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。题目分析在网络编程中,如果URL参数中含有特殊字符,比如空格、'#'等,可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。转换规则:在 '%'后面跟上ASCII码的两位十六进制的表示。...原创 2019-06-29 21:22:22 · 95 阅读 · 0 评论 -
剑指offer面试题6——从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。题目分析使用栈:先遍历一遍链表,每经过一个节点,把该节点的数据放入栈中。遍历结束后,从栈顶开始输出元素值。class Solution {public: vector<int> printListFromTailToHead(ListNode* head) { Li...原创 2019-06-30 21:10:40 · 84 阅读 · 0 评论 -
剑指offer——跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。题目分析n=1时,有一种跳法;n=2时,有两种跳法。把n级台阶时的跳法看成n的函数,记为f(n)。n>2,第一次跳的时候就有两种不同的选择:第一次跳1级,此时跳法等于后面的n-1级台阶的跳法,即f(n-1);第一次跳2级,此时跳法等于后面的n-...原创 2019-07-06 20:26:08 · 96 阅读 · 0 评论 -
剑指offer——变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。题目分析n级台阶时的跳法为f(n),则有f(n)=f(n-1)+f(n-2)+...+f(2)+f(1)+f(0),其中f(n-1)为第一次跳1级时的跳法数目,f(0)为第一次跳n级时的跳法数目。f(n-1)=f(n-2)+...+f(2)+f(1)+f(0),...原创 2019-07-06 20:58:45 · 104 阅读 · 0 评论 -
剑指offer——矩形覆盖
题目描述我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?题目分析 如上图为2*n大矩形,用第一个2*1小矩形覆盖它时有两种选择:1、竖着放,此时还剩...原创 2019-07-06 21:23:59 · 85 阅读 · 0 评论 -
剑指offer14——剪绳子
题目描述给你一根长度为n的绳子,请把绳子剪成m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],...,k[m]。请问k[0]xk[1]x...xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。class Solution {public: int cutRo...原创 2019-09-16 22:16:31 · 111 阅读 · 0 评论