![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
剑指offer
喜欢ctrl的cxk
跪求大佬们别DDOS tanyaodan. com
展开
-
【剑指offer】字符流中第一个不重复的字符
题目描述: 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 输出描述: 如果当前字符流没有存在出现一次的字符,返回#字符。 解题思路: 用map来记录字符出现的次数,map的key为字符 value为字符出现的次数,无脑f...原创 2019-05-13 19:43:04 · 424 阅读 · 0 评论 -
【剑指offer】数组中重复的数字
题目描述: 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解题思路: 用set来记录数组中出现过的数字,若s.count(numbers[i]) != 0,就说明numbe...原创 2019-05-11 14:53:15 · 980 阅读 · 0 评论 -
【剑指offer】用两个栈实现队列
题目描述: 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解题思路: 入栈时直接把元素推入stack1,出栈时需要借助stack2来实现像队列一样“先进先出”。当stack2不为空时,先将stack2中的元素一一取出;当stack2为空时,把stack1中的元素全部推入stack2,这样stack1的栈底元素就会出现在stack2的栈顶,stack1的...原创 2019-05-11 14:33:15 · 403 阅读 · 0 评论 -
【剑指offer】第一个只出现一次的字符
题目描述: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)。 解题思路: 用map来记录每个字符出现的次数即可。 AC代码: class Solution { public: int FirstNotRepeatingChar(string str) { ...原创 2019-05-11 11:43:00 · 156 阅读 · 0 评论 -
【剑指offer】合并两个排序的链表
题目描述: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。 解题思路: 递归求解,把大的链表插入到小的链表后面。 AC代码: /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(...原创 2019-05-10 21:26:03 · 816 阅读 · 0 评论 -
【剑指offer】替换空格
题目描述: 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解题思路: 先从前往后进行遍历统计出字符串str中空格的个数cnt,然后再从后往前把空格替换成%20。若字符不是空格,则直接将字符后移cnt*2个单位长度;若字符是空格,则另cnt--;并插入'%20'即可。 AC代码:...原创 2019-05-07 15:11:01 · 439 阅读 · 2 评论 -
【剑指offer】数组中只出现过一次的数字
题目描述: 一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。 解题思路: 用map来记录每个数字出现的次数,无脑遍历data,然后再对map进行for-each去寻找只出现过一次的那俩个数时,找到后分别记录在*num1和*num2中。 AC代码: class Solution { public: void FindNumsAppear...原创 2019-05-09 13:46:59 · 821 阅读 · 0 评论 -
【剑指offer】从尾到头打印链表
题目描述: 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 解题思路: 利用栈“先进后出”的性质来实现。先把链表的值按照顺序推入栈中,然后再把栈中的元素一一取出来放入一个vector中,最后返回vector即可。 AC代码: /** * struct ListNode { * int val; * struct ListNode *nex...原创 2019-05-09 13:15:17 · 314 阅读 · 0 评论 -
【剑指offer】二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 ...原创 2019-05-13 20:18:11 · 649 阅读 · 0 评论 -
【剑指offer】二叉树的深度
题目描述: 输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 解题思路: 递归求解,很好理解的。 AC代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(i...原创 2019-05-13 19:59:36 · 487 阅读 · 0 评论 -
【剑指offer】从上至下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 解题思路: 借助queue来实现从上至下从左至右遍历二叉树,然后从上至下从左至右把二叉树每个结点的值都放入一个vector中。 AC代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; ...原创 2019-05-11 15:14:35 · 526 阅读 · 0 评论