自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 剑指offer:字符流中第一个不重复的数字

题目描述 请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 我的思路 对我来说本题的关键在于没有读懂题意,根据题目,字符流是要挨个读进去的,因此有一个函数insert用来把字符读入字符串中;可以定义一个map<char,int> cha,int 为该字符出现的次数,每插入一个字符,cha[char]++;在函数中判断如果cha[cha

2021-03-05 09:40:39 68 1

原创 剑指offer:表示数值的字符串

题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。 我的思路 1、只能有一个小数点,设置一个标志point用来标记是否已有小数点; 2、字符串中不能包含除e或E之外的字母,且只能有一个e或E; 3、字符串中若包含e或E则其后可以有一个 + - 号; 4、指数部分不能有小数; 5、最后一个字符必须是数字;

2021-03-05 09:27:26 81 1

原创 剑指offer:正则表达式匹配

题目描述 请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。 题目思路 递归的比较每一个字符是否匹配,跳出递归的条件为: 1、字符串和模式串都为空时,返回true; 2、字符串不为空、模式串为空时,返回false; 匹配过程中的几种情况: 定义int型变量i遍历字符串,j

2021-03-04 11:59:40 77 1

原创 剑指offer:把字符串转换成整数

题目描述 将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0; 我的思路 首先关于正负号,设置一个标志位sign,如果为正号,则sign=1;如果为负号,则sign=-1;最后用数字和sign相乘得到最后数字。 关于数字,判断数字是否合法,判断字符串是否>'0’并且<‘9’,若合法用改字符-‘0’,得到数字,加下一个数字时,原数字*10再加下一位,若不合法返回0; 代码 class Solution { public: int

2021-03-04 10:14:55 76 1

原创 剑指offer:平衡二叉树

题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树 平衡二叉树(Balanced Binary Tree),具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 我的思路 如果存在节点为一边有两层,一边为空,则返回false,由此递归,但是结果不对,编译不通过。参考了网上的代码,可以求出左右子树的高度,根据高度差判断是否是平衡二叉树。 代码 class Solution { public

2021-03-03 14:47:54 73

原创 剑指offer:丑数

题目描述 把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。 我的思路 设计一个计数器,从数字1开始挨个遍历,如果该数字满足只能整除2、3或5,则计数器加1,由此得出第n个丑数。 但是这种方法提交时总是运行超时,因此参考了别人的代码,大概思路如下: 定义一个数组用来存储前n个丑数,先定义三个int型变量,c2,c3,c5,分别用来存储3个队列,为乘2、乘3、乘5所得的队列,找出

2021-03-02 12:31:33 44

原创 剑指offer:把数组排成最小的数

题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 我的思路是按照每一位比较数字的大小,进行排序,但这对于数量级不同,某些数位相同的数来说不能、满足题意,因此参考了网上的教程。 网上的教程先将数组排序,但是按照正常的排序方法显然不行,因此自定义了排序函数,根据字符串的大小来排序。此处涉及到sort函数的一些应用。 关于sort函数的应用 其使用方式如下: sort(首

2021-02-24 10:36:54 73

原创 剑指offer:整数中1出现的次数

题目描述 求出1-13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。 我的思路 从1到n遍历每一个数,然后判断每一个数的每一位是否为1,是的话num++。 关于如何判断每一位是否为1,分别用该数除以1,10,100,,,再除10取余看是否位1来判断对应位是

2021-02-22 10:08:49 43

原创 剑指offer:字符串的排列

题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则按字典序打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 解题思路 由于刚开始看到这个题目,我完全没有思路,因此参考了网上的一些解法。 这个题目的解法可以分为三步: 1、将字符串分为首字符和后面的字符两部分; 2、将首字符依次和后面的字符交换; 3、将后面的字母也按照步骤1 2进行递归,直到交换为止。 一些小问题: 1、遇到重复的字符,可以略过,不需要进行交换。 2、看网上

2021-02-22 09:51:24 64

原创 剑指offer:二叉树与双向链表

题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 我的思路 1、一个小点,二叉搜索树即为二叉排序树,中序遍历的结果为一个递增的数组,因此这个题首先基本思路是进行二叉树的中序遍历。 //二叉树中序遍历递归的代码如下: void midorder(TreeNode* pRootOfTree){ if(pRootOfTree==NULL){ return; } mid

2021-02-20 18:14:51 87

原创 剑指offer:复杂链表的复制

题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)。 我的思路 创建新的节点,根据原链表的next指针为新的节点逐个赋值,将新链表的next指针赋值完成后,第二次遍历复制random,复制random时,判断该复制链表哪个结点与原链表要复制结点同一位置结点的random相同,将复制链表该赋值结点的random指向该节

2021-02-20 16:41:25 54

原创 剑指offer:二叉树中和为某一值的路径 c/c++

剑指offer:二叉树中和为某一值的路径 c/c++ 题目描述 输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。 一些思路 根据题目要求 求路径的和 可知应该进行树的深度优先搜索遍历。 深度优先搜索遍历 ,深度优先搜索遍历使用的是递归的方法; // 关于DFS遍历代码: void DFS(TreeNode* root){ if(root==NULL) return; cout<

2021-02-19 12:09:22 198

空空如也

空空如也

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

TA关注的人

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