剑指Offer
自己刷题的过程
生若-夏花
有执念,才有力量。
展开
-
剑指Offer ---二叉树的下一个结点
给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 代码 /* struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struct TreeLinkNode *nex...原创 2020-01-14 14:24:11 · 92 阅读 · 0 评论 -
剑指Offer--扑克牌顺子
题目描述 LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张...原创 2020-01-12 18:04:38 · 131 阅读 · 0 评论 -
剑指Offer--左旋转字符串
题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它! 代码 class Solution { public: string LeftRotateS...原创 2020-01-10 23:40:10 · 92 阅读 · 0 评论 -
剑指Offer---字符串找第一个出现一次的字符的位置
题目描述 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写) 代码 class Solution { public: int FirstNotRepeatingChar(string str) { if(str.size() == 1) return 0; ...原创 2020-01-08 18:32:41 · 312 阅读 · 0 评论 -
剑指Offer--后序二叉搜索树判断
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 代码 class Solution { public: bool VerifySquenceOfBST(vector<int> sequence) { // int low,height; ...原创 2020-01-06 20:55:43 · 96 阅读 · 0 评论 -
剑指Offer---出栈顺序的判断正误
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 代码 class Solution { public: bool IsPopO...原创 2020-01-06 15:55:09 · 120 阅读 · 0 评论 -
剑指Offer---归并算法链表合并
题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则 代码 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { } };*/ class Solution { public: ListNode* M...原创 2020-01-05 17:28:49 · 107 阅读 · 0 评论 -
剑指Offer--13题
题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 代码 #include <iostream> #include <vector> #include <cstdlib> #include <stack> #include ...原创 2020-01-05 15:59:50 · 139 阅读 · 0 评论 -
剑指Offer---求二进制中1 的个数
题目描述 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 代码 #include <iostream> #include <vector> #include <cstdlib> #include <stack> #include <cmath> using namespace std; /* 输入一个整数,输出该数二进制...原创 2020-01-05 15:27:03 · 118 阅读 · 0 评论 -
剑指offer--青蛙跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 代码 class Solution { public: int jumpFloorII(int number) { int i = number-1; return pow(2, i); } }; 总结 根据规律的F(n)=F(1)+F(2...原创 2020-01-05 14:17:17 · 147 阅读 · 0 评论 -
剑指offer--斐波那契数列
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 代码 class Solution { public: int Fibonacci(int n) { //递归速度不行 int num[39]; num[0]=0; num[1]=1; ...原创 2020-01-05 10:52:54 · 73 阅读 · 0 评论 -
剑指Offer--数组的旋转
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 代码 class Solution { public: int minNumberInRotateArr...原创 2020-01-05 10:43:48 · 117 阅读 · 1 评论 -
剑指Offer--两个栈实现一个队列
题目描述 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 代码 class Solution { public: void push(int node) { int len,num; len=stack2.size(); while(len>0){ num = stack2...原创 2020-01-04 16:33:44 · 96 阅读 · 0 评论 -
剑指Offer--根据前序和中序遍历重建二叉树
标题题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回 代码 #include <iostream> #include <vector> #include <cstdlib&...原创 2020-01-04 15:13:25 · 164 阅读 · 0 评论