![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
虚心学习进步
主学C++、linux、网络编程
展开
-
剑指offer面试题58:翻转字符串
题目描述:例如,输入“student. a am I”。输出是“I am a student.”。思路:第一步翻转整个句子的所有字符,比如翻转“I am a student.”,得到".tneduts a ma I" 第二步,再反转各个单词//实现字符串翻转的函数void Reverse(char* pBegin,char* pEnd){ if(pBegin==nullpt...原创 2018-09-24 17:04:39 · 179 阅读 · 0 评论 -
动态规划---剑指offer面试题46--把数字翻译成字符串
题目给定一个数字,按照如下规则翻译成字符串:0->a1->b...25->z因此一个数字可能有多种翻译。例如,12258有5种不同的翻译,bccfi,bwfi,bczi,mcfi,mzi。请实现一个函数,计算数字有多少种翻译方法。思路可以用递归解决,会发现子问题258 58都重复了。 自然想到可以用动态规划来解决,用f(i)来表示从...原创 2018-08-28 09:01:11 · 351 阅读 · 0 评论 -
剑指offer面试题38字符串全排列
问题1:输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。(输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母)分析:这属于输入字符串中可能有重复字符,所有重复的组合只打印一次(比如“aa”,只输出"aa")#include <algo...原创 2018-08-24 16:27:35 · 745 阅读 · 0 评论 -
剑指offer面试题36---二叉搜索树与双向链表
1.题目描述:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向 2.通过书上一个例子的图形象描述下: 3.代码实现//一开始我想到的是:中序遍历然后把节点依次用左右指针连起来即可,没有象书中讲的那么麻烦的方法 ,不过书中的这种递// //归的方法还是值得练习的/*struct TreeNode { in...原创 2018-08-24 14:34:28 · 132 阅读 · 0 评论 -
剑指offer面试题30--包含min函数的栈
1.题目描述:定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数。在该栈中,调用min,push,pop,的时间复杂度都是O(1)2.设计思想一应用一个辅助栈,压的时候,如果待压入元素比B栈栈顶大,A压B不压,小于等于,AB栈同时压入,出栈,如果,AB栈顶元素不等,A出,B不出。class Solution {public: stac...原创 2018-08-28 08:45:08 · 299 阅读 · 0 评论 -
剑指offer34题--二叉树和为某一值的路径
输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)需要注意,这道题的题意,路径必须是根节点到某叶子节点。根节点到中间节点,即使路径和满足也不行此处做下标记,代码注释我已经写出如果要更完善点,应该加分支限定,此文代码需要更新/*str...原创 2018-08-24 14:32:05 · 133 阅读 · 0 评论 -
剑指offer面试题33二叉搜索树的后序遍历序列
题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。设计思想:序列的最后一个元素一定是整棵树的根节点,从序列开头找第一个大于根节点值的元素p->val,该元素后边直到末尾前一个元素的元素值应该都大于p->val(若p到末尾之间还有元素,才满足后序遍历的二叉搜索树),[p,末尾...原创 2018-08-24 14:32:11 · 147 阅读 · 0 评论 -
剑指offer面试题52--两个链表的第一个公共节点
题目描述输入两个链表,找出它们的第一个公共结点。设计思想:先让指向长链表头结点的指针往后走几步,直至两链表头指针指的链表长度相等,再同时向后走,依次比较二者指向的节点,直至找到相同的节点做返回有空再用其他方法做下/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), ...原创 2018-08-24 18:12:57 · 143 阅读 · 0 评论 -
剑指offer面试题40--最小的k个数
题目描述:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。设计思想一:创建一个结果容器,若放源数据的容器的源数据的个数少于k个,则把所有源数据直接插入结果容器,若源容器的数据数目多于k个,则取完k个后,以后取出的每个元素都要和结果容器的元素最大值比,若比结果容器的最大值大,则该元素替换结果容器的最大值,否则,取源...原创 2018-07-28 10:07:28 · 164 阅读 · 0 评论 -
剑指offer面试题7--重建二叉树
描述输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。class Solution {public: struct TreeNode* reConstructBinaryTree(vector...原创 2018-08-17 15:19:59 · 229 阅读 · 0 评论 -
剑指offer面试题6-从尾到头打印链表
题目描述输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/c...原创 2018-08-24 18:12:28 · 123 阅读 · 0 评论 -
剑指offer面试题5:替换空格
题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: void replaceSpace(char *str,int length) { if(str==nullptr||length<=0) ...原创 2018-08-15 21:31:10 · 185 阅读 · 0 评论 -
剑指offer面试题4:二维数组中国的查找
题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。class Solution {public: bool Find(int target, vector<vector<int> > array) { ...原创 2018-08-24 14:33:01 · 136 阅读 · 0 评论 -
剑指offer面试题49---丑数
题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数分析:容易想到使用穷举法对N个数判断是否仅被2、3、5整除,低效bool IsUgly(int number){ while(number%2==0) number/=2; ...原创 2018-08-27 21:01:07 · 158 阅读 · 0 评论 -
剑指offer面试题39--数组中出现次数超过一半的数字
题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。思路一:分析:数组中若一个数字出现次数超过一半,则一定比其他所有元素出现次数的和多,若从数组头开始遍历,令num=array[0],设一个count变量,初值1,遇到相同...原创 2018-08-06 09:35:29 · 125 阅读 · 0 评论 -
剑指Offer面试题21--调整数组顺序使得奇数在偶数前
设计思想(一):维护两个指针,第一个指针初始化指数组首地址,它只向后移动;第二个初始化指数组末尾,它只向前移动。在二者相遇前,若第一个指针指偶数,第二个指针指奇数则交换二者位置代码:#include <iostream>using namespace std;void RecorderOddEven(int* pData, unsigned int length)...原创 2018-08-24 18:12:22 · 125 阅读 · 0 评论 -
剑指offer面试题26树的子结构
1.题目描述:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)2.设计思想第一步是在树A种查找与B根节点值一样的节点,这实际就是二叉树的遍历bool HasSubtree(TreeNode* pRoot1, TreeNode* pRoot2) { bool hasSubTree=false; ...原创 2018-08-24 18:12:07 · 173 阅读 · 0 评论 -
剑指offer面试题24--反转链表
1.基本思想:设指针pNode,指当前节点CurrentNode,既然要反转就让CurrentNode的next指针指CurrentNode的前驱节点设为preNode,还要循环处理pNode在原链表的next节点,所以反转前事先保留pNode->next以便循环。也就是程序开始前需要定义三个指针pNode,preNode,nextNode2.写代码中考虑几种情况 (1)输入的...原创 2018-08-24 18:12:13 · 129 阅读 · 0 评论