自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Black Mamba的博客

Done is better than perfect.

  • 博客(29)
  • 收藏
  • 关注

原创 剑指offer 面试题26 树的子结构

问题:输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)输入:两颗二叉树的根节点指针输出:是否为子结构思路:第一步,在A树中查找与B树根节点值相同的节点第二步,判断A中以pRootB为根节点的子树是否与B具有相同的结构代码:/*struct TreeNode { int val; struct TreeNode...

2020-02-27 17:59:41 130

原创 剑指offer 面试题25 合并两个排序的链表

问题:输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则输入:两个链表的头结点指针输出:合并后的链表头节点指针思路:代码:复杂度分析...

2020-02-27 16:43:32 155

原创 剑指offer 面试题24 反转链表

问题:输入一个链表,反转链表后,输出新链表的表头。输入:链表头节点输出:新链表的表头思路:如上图,可以一个一个地把链表节点的next指针修改,注意的是,在修改之后,链表节点无法访问到之前的next指针指向的节点,必须要在修改指针前将其保存下来。分析一下:需要一个指针进行链表的遍历;需要一个指针保存h,以便i指向h;需要一个指针保存i的下一个节点j。共需要三个指针,分别指...

2020-02-26 17:26:47 140

原创 剑指offer 面试题23 链表中环的入口节点

问题:给定一个链表,返回链表开始入环的第一个节点。如果链表无环,则返回null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。说明:不允许修改给定的链表。输入:链表头节点输出:环的入口节点或null思路:确定有没有环,利用两个不同步长的指针,遍历链表,如果步长大的指针遍历...

2020-02-26 16:48:14 104

原创 剑指offer 面试题22 链表中倒数第K个节点

问题:输入一个链表,输出该链表中倒数第k个结点。输入:链表头节点指针,k输出:倒数第k个节点思路:利用两个指针,第一个指针首先移动k-1步,如果中途移动到链表尾部,则链表长度小于k,返回结果nullptr。如果未移动到链表尾部,则使第二个指针指向头部,然后两个指针同时移动,使第一个指针指向尾部,此时,第二个指针指的是链表倒数第k个节点。代码:/*struct...

2020-02-26 11:33:13 95

原创 剑指offer 面试题21 调整数组顺序使奇数位于偶数前面

问题:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。输入:vectorarray思路:开辟同等大小空间的vector,前向遍历保存奇数于temp低位,后向遍历保存偶数于temp高位,最后将temp赋给array。代码:class Solution {pub...

2020-02-25 22:17:49 84

原创 剑指offer 面试题20 表示数值的字符串

问题:验证给定的字符串是否可以解释为十进制数字。输入:constchar*str输出:是否为有效的数字思路:首先,扫描整数部分(起始处可能有+或-),然后,扫描小数部分(如果一个数没有整数部分,那么他的小数部分不能为空),最后,扫描指数部分(起始处可能有+或-)。代码:class Solution {public: int i=0; bool scanU...

2020-02-25 21:23:43 117

原创 剑指offer 面试题19 正则表达式匹配

问题:给你一个字符串s和一个字符规律p,请你来实现一个支持 '.'和'*'的正则表达式匹配。(leetcode10 hard)'.' 匹配任意单个字符'*' 匹配零个或多个前面的那一个元素输入:两个字符串变量s和p输出:是否匹配思路:主要需要注意模式串中的*,如果为*,则模式串的指针有可能不动,也有可能跳动两个位置。代码:class Solution {...

2020-02-25 16:16:40 110

原创 剑指offer 面试题18-2 删除链表中重复的节点

问题:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。输入:链表头节点指针思路:由于链表是有序的,只需要通过比较邻近两个节点是否相等,就可以找到所有重复的元素,然后利用指针操作将重复的节点删除。代码:/** * Definition for singly-linked list. * struct ListNode { * int val; ...

2020-02-25 13:26:01 193

原创 leetcode[372] super pow

问题:你的任务是计算 对 1337 取模,a 是一个正整数,b 是一个非常大的正整数且会以数组形式给出。输入:int a,vector<int>& b,base=1337输出:幂取模后的结果思路:首先,利用如下递推公式处理b:然后,因为b是一个非常大的正整数,因此a^b的结果肯定不能用int表示,这里,用到了一个数学知识:(a*b)%base等于(a%...

2020-02-25 10:47:09 188

原创 剑指offer 面试题18-1 删除链表的节点

问题:在O(1)时间复杂度完成对单向链表中某一节点的删除输入:被删除节点指针思路:不能从头开始遍历至被删除节点的上一个节点,将其下一个指针指向被删除节点的下一个节点,时间复杂度为O(n),不满足题目给定条件。因此,采用以下方法:把被删除节点的下一个节点的值赋给被删除节点,再把下一个节点删除。代码:class Solution {public: void dele...

2020-02-23 23:30:02 210

原创 剑指offer 面试题17 打印从1到最大的n位数

问题:输入数字n,按顺序打印出从1到最大的n位十进制数。输入:n输出:打印数字思路:易错思路:求出最大的n位十进制数,然后for循环打印。错误原因:最大的n位十进制数有可能超出int型(或longlong型)。利用数组(或字符串)来表达大数。代码:#include <iostream>#include <string.h>using...

2020-02-23 18:27:12 207 1

原创 剑指offer 面试题16 数值的整数次方

问题:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。输入:double型浮点数base,int型整数exponent。输出:double型结果。思路:本题思路不难,但是容易忘记处理各种边界值,异常值。当exponent为正数时,base直接累乘exponent-1次,得到结果异常值1:当exponent为负数时...

2020-02-23 17:25:49 170

原创 剑指offer 面试题15 二进制中1的个数

问题:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。输入:整数n输出:二进制表示中1的个数思路:本题有个巧妙之处,n&(n-1)可使最右边的1置0.每循环一次,将最右边的1置为0.循环的次数等于二进制表示中的1的个数。代码:class Solution {public: int NumberOf1(int n) { ...

2020-02-22 18:15:53 249 1

原创 剑指offer 面试题14 剪绳子

问题:给你一根长度为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。输入:长度n、段数m输出:绳子段的最大乘积思路:动态规划得到...

2020-02-22 17:06:21 184

原创 剑指offer 面试题13 机器人的运动范围

问题:地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。 例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7 = 18。但是,它不能进入方格(35,38),因为3+5+3+8 = 19。请问该机器人能够达到多少个格子?输入:阈值k,行m,列n输出:机器人能够...

2020-02-21 21:51:23 1261

原创 剑指offer 面试题12 矩阵中的路径

问题:请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子...

2020-02-21 18:49:49 242

原创 剑指offer 面试题11 旋转数组中的最小数字

问题:把一个数组(给出的所有元素都大于0)最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。NOTE:若数组大小为0,请返回0。输入:一个非递减排序的数组的一个旋转vector<int> array输出:旋转数组的最小元素。思路:如果顺序查找,时间复杂度为O(n),这里介绍一种时间复杂度为O(logn)的算法,基于二分查找,具体思路如下:建立两个指针index...

2020-02-21 13:26:44 129

原创 剑指offer 编程题10 斐波那契数

问题:求斐波那契数输入:N输出:求第N项斐波那契数思路:递归/循环代码:递归代码int fibo(int n){ if(n==0) return 0; if(n==1) return 1; return fibo(n-1)+fibo(n-2);}循环代码class Solution {public: int Fibonacci(i...

2020-02-18 22:08:09 126

原创 剑指offer 面试题9 用两个栈实现队列

问题:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。输入:两个栈输出:队列的push和pop操作思路:入队列时,压进stack1。出队列时,判断stack2是否为空,如果为空,则将stack1全部元素弹出,如果不为空,则从stack2弹出一个元素。代码:class Solution{public: void pus...

2020-02-16 23:01:17 137

原创 剑指offer 面试题8 二叉树的下一个节点

问题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。输入:二叉树中的一个节点指针输出:下一个节点的指针思路:当一个节点有右子树时,它的下一个节点为右子树的最左节点。当一个节点没有右子树时,它是父节点的左儿子,它的下一个节点为父节点。当一个节点没有右子树时,它是父节点的右儿子,它的下一个...

2020-02-16 22:11:41 163

原创 剑指offer 面试题7 重建二叉树

问题:给定二叉树的前序遍历和中序遍历(不包含重复的数字),重建二叉树,并输出头结点。输入:二叉树的前序遍历和中序遍历。输出:二叉树重建之后的头结点。思路:先找到根节点,如果只有一个节点,显而易见这个节点就是根节点,如果多于一个节点,则前序遍历中的第一个节点就是根节点,将它保存为输出结果,然后再继续寻找它的子节点。前序遍历中的第一个节点为根节点,在中序遍历中,找到该节点的位置,...

2020-02-15 22:00:12 119

原创 leetcode[387]First Unique Character in a String

问题:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。输入:一个字符串(仅包含英文小写字母)输出:第一个不重复的字符索引(不存在则返回-1)思路:遍历一遍字符串,利用hash表存储,每个字符为key时,value加1。然后,正序遍历一遍字符串,如果value为1,则返回其索引。(或者,遍历一遍hash表,如下第一个代码,判断是否为不重复的数字,比较得到最小的索...

2020-02-11 18:28:30 115

原创 剑指offer 面试题6 从尾到头打印链表

问题:输入一个链表的头结点,从尾到头反过来打印每个节点的值。输入:一个链表的头结点。输出:打印从尾到头的节点的值。思路:借用栈这一数据结构,遍历链表,将值存放在栈中。然后出栈,进行打印。代码:本地调试代码(迭代法)#include <iostream>//#include ".\Utilities\List.h"#include <stack>...

2020-02-10 23:39:08 213

原创 剑指offer 面试题5 替换空格

问题:用“%20”替换字符串的空格(不许新创建字符串)输入:字符串输出:替换后的字符串思路:首先,遍历一遍字符串,找出有多少个空格,从而确定字符串的长度。然后,准备两个指针分别指向原字符串的末尾、替换后字符串的末尾。接着,两个指针各向左移动1一个位置,如果第一个指向原字符串的空格,则第二个指针左边插入“%”“2”“0”,指针本身向左移动3个位置。最后,如果两个指针指向...

2020-02-09 17:57:08 296

原创 剑指offer 面试题4 二维数组中的查找

问题:在一个特殊的二维数组(右边的数比左边的数大,下面的数比上面的数大)中查找是否存在某个数字。输入:二维数组,行,列,某个数字输出:某个数字是否存在思路:重述下书上提供的思路,从数组的右上角(或者左下角)开始比对。如果某个数字小于数组中选择的数,则删除该列,向左移动进行比对。如果某个数字大于数组中选择的数,则删除该行,向下移动进行比对。如果某个数字等于数组中选择的数,则...

2020-02-08 18:32:43 191

原创 剑指offer 面试题3_2 数组中重复的数字(不能修改原有数组内容)

问题:在不编辑给定数组的情况下,在长度为n+1的数组中找到任意一个重复的数字,所有数字在1~n范围内。输入:数组,数组的长度输出:重复的数字思路:由于不能修改原有数组,面试题3_1的算法思路不能使用。根据本题的条件,必定会存在一个重复的数字,如果将开辟一个大小为n的数组,将原数组的数字放到新数组下表为其值的位置,花O(n)时间复杂度就能找到重复的数字。但是,其空间复杂度也为O(n)。...

2020-02-07 18:45:10 149

原创 剑指offer 面试题3_1 数组中重复的数字

问题:找到数组中第一个重复的数字。输入:数组,数组的长度输出:是否存在重复的数字,如存在,则输出第一个重复的数字。思路:如果对数组进行排序,则需要O(nlogn)的时间复杂度。因为数字在0~n-1内,每个数字都应该在其该在的位置上,如果出现重复数字,则一个位置上有多个数字,这里采用了更为效率的算法。首先,遍历整个数组,判断对该下标i是否等于数字num, 如果相等,则遍历至...

2020-02-07 15:57:33 165

原创 Visual Studio运行本地windows调试器出现无法启动程序,系统找不到指定的exe文件

问题讲述:利用visualstudio打开网上down下来的代码,点击本地windows调试器,弹出窗口,说“无法启动程序,系统找不到指定的exe文件”。原因:未对项目生成解决方案。解决方法:在资源管理器,选中该项目,右键选择生成解决方案。在此基础上,点击本地windows调试器,程序正常运行。...

2020-02-05 22:17:33 14005 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除