E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
剑指Offer系列
剑指offer系列
——22.从上往下打印二叉树
Q:从上往下打印出二叉树的每个节点,同层节点从左至右打印。T:简单而言就是层序遍历,使用队列。A:vectorPrintFromTopToBottom(TreeNode*root){queueq;vectorarray;if(root==nullptr)returnarray;q.push(root);while(!q.empty()){TreeNode*node=q.front();if(nod
Shaw_喆宇
·
2020-02-08 16:00
剑指Offer——从尾到头打印链表与重建二叉树
剑指offer系列
,个人读书记录,希望能帮助你理解。变秃才能变强具体的实现思路,在我的代码注释中全都有,如果还不理解可以多刷几遍。
苏州韭菜明
·
2020-02-05 10:19
剑指offer系列
——13.调整数组顺序使奇数位于偶数前面
Q:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。C:时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MA:1.最简单的,开辟新的数组voidreOrderArray(vector&array){vectoreven;vectorodd;intle
Shaw_喆宇
·
2020-02-01 17:00
剑指offer系列
——12.数值的整数次方
Q:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0。C:时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MT:1.刚刚学习了快速幂,正好用上:https://www.cnblogs.com/xym4869/p/12240806.html这个题要注意,exponent
Shaw_喆宇
·
2020-01-31 19:00
剑指offer系列
——11.二进制中1的个数
Q:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。C:时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MT:第一种方法,整形数字在32系统占32位,由低位到高位,按位与1,即可统计出32位中1的个数。intNumberOf1(intn){intcount=0;for(inti=0;i>=1;}returncount;}第二种,这种方法hin神奇,通过
Shaw_喆宇
·
2020-01-31 18:00
剑指offer系列
——10.矩阵覆盖
Q:我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?C:时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MT:@flysall第一种情况等价于情形1中阴影部分的n-1块矩形有多少种覆盖方法,为f(n-1);第二种情况等价于情形2中阴影部分的n-2块矩形有多少种覆盖方法,为f(n-2);故f(n
Shaw_喆宇
·
2020-01-30 16:00
剑指offer系列
——8.跳台阶 9.变态跳台阶
跳台阶Q:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。C:时间限制:C/C++1秒,其他语言2秒空间限制:C/C++32M,其他语言64MT:对于本题,前提只有一次1阶或者2阶的跳法。a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是一阶,那么剩下的是n-1个台阶,跳法是f(n-1);b.假定第一次跳的是2阶,那么剩下的是
Shaw_喆宇
·
2020-01-29 20:00
剑指Offer系列
刷题笔记汇总
本文转自:个人网站:点击查看一前言二总结链表-8道二叉树12道二叉搜索树3道数组11道字符串8道栈3道递归4道回溯法2道其他15道一、前言本系列文章为《剑指Offer》刷题笔记。刷题平台:牛客网书籍下载:共享资源刷题刷的比较慢,花费了两个多月,终于将所有题目过了一遍,牛客网一共有66道题,这次刷题主要使用C++,接下来会使用Python重新过一遍,并对这些写过的文章进行更新。同时,也会重新开始刷L
Jack-Cui
·
2018-02-03 15:17
算法
剑指Offer系列
-面试题49:把字符串转化为整数
题目:输入一个字符串,把字符串转化为整数。思路:进行输入合法性判断。代码:privatebooleantag=false;publiclongStrToInt(Stringstr){if(str==null||str.equals("")){tag=true;return0;}char[]chars=str.toCharArray();booleanisNegative=chars[0]=='-'
RojerAlone
·
2017-03-18 16:42
剑指Offer
剑指Offer
剑指Offer系列
-面试题42:翻转单词顺序和左旋转字符串
题目一:输入一个英文句子,翻转句子中单词的顺序,但单词内的字符顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串“Iamastudent.”,输出“student.aamI”。思路:先把整个字符串翻转过来,然后再把每个单词翻转过来。代码:privatevoidreverse(char[]chars,intbegin,intend){if(chars==null||chars.leng
RojerAlone
·
2017-03-17 18:08
剑指Offer
剑指Offer
剑指Offer系列
-面试题30:最小的K个数
题目:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。思路:运用快排的思想,每次排序后,point点左边的数都小于point,因此只要让point的坐标等于k-1时,point以及它左边的数就是最小的k个数。但是这样会改变数组原有次序。另一种思路是事先设置一个大小为k的容器,同时设置一个变量max用来记录当前容器中最大的数,
RojerAlone
·
2017-03-13 16:38
剑指Offer
剑指Offer
剑指Offer系列
-面试题27:二叉搜索树与双向链表
题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。思路:由二叉搜索树的原理,中序遍历即为有序的链表,因此直接中序遍历,一边遍历,一边调整指针。代码:///非递归,中序遍历TreeNode*Convert(TreeNode*root){if(root==NULL){returnNULL;}stacks;TreeNode*p=roo
RojerAlone
·
2017-03-12 20:21
剑指Offer
剑指Offer
剑指Offer系列
-面试题26:复杂链表的复制
题目:输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。结点定义如下:structListNode{intval;structListNode*next;structListNode*sibling;};思路:代码:ListNode*Clone(ListNode*pHead){ListNode*node=p
RojerAlone
·
2017-02-27 22:31
剑指Offer
剑指Offer
剑指Offer系列
-面试题19:二叉树的镜像
题目:请完成一个函数,输入一个二叉树,该函数输出它的镜像。二叉树的结点定义如下:structBinaryTreeNode{intm_nValue;BinaryTreeNode*m_pLeft;BinaryTreeNode*m_pRight;};思路:代码://递归实现voidMirrorRecursively(BinaryTreeNode*pNode){if((pNode==NULL)||(pNo
RojerAlone
·
2017-02-16 22:01
剑指Offer
剑指Offer
剑指Offer系列
-面试题18:树的子结构
题目:输入两颗二叉树A和B,判断B是不是A的子结构。二叉树结点的定义如下:structBinaryTreeNode{intm_nValue;BinaryTreeNode*m_pLeft;BinaryTreeNode*m_pRight;};思路:需要多次判断指针为NULL时的情况,这也是递归结束的标识。代码:boolDoesTree1HaveTree2(BinaryTreeNode*pRoot1,B
RojerAlone
·
2017-02-16 16:47
剑指Offer
剑指Offer
剑指Offer系列
-面试题9:斐波那契数列
题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项。效率很低的解法(递归实现):longlongFibonacci(unsignedintn){if(nusingnamespacestd;longlongFibonacci(unsignedn){intresult[2]={0,1};if(n<2)returnresult[n];longlongfibNMinusOne=1;lo
RojerAlone
·
2017-02-03 16:02
剑指Offer
剑指Offer
剑指Offer系列
-面试题6:重建二叉树
题目:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出二叉树并输出它的头结点。代码没有重新写,是15年秋数据结构的OJ题,徒手写的队列和二叉树的类。#includeusingnamespacestd;/***********
RojerAlone
·
2016-12-23 21:34
剑指Offer
剑指Offer
牛客网
剑指offer系列
错题记录二
看过书大致理解了之后,做题,还是有很多错误,通过率太低了。本题20%,但是最后还是在vs08上调试才发现问题,希望慢慢提高通过率。求两个链表的第一个公共结点,用的思想是,想计算两个链表的长度,链表长的先往前走,走到剩下的两个链表一样长的那一步,然后判断结点值是否相等,如果相等则返回该结点,特殊情况是没有公共结点的时候。classSolution{public:ListNode*FindFirstC
Cinderella_hou
·
2016-07-11 10:26
牛客网
剑指offer系列
错题记录二
看过书大致理解了之后,做题,还是有很多错误,通过率太低了。本题20%,但是最后还是在vs08上调试才发现问题,希望慢慢提高通过率。求两个链表的第一个公共结点,用的思想是,想计算两个链表的长度,链表长的先往前走,走到剩下的两个链表一样长的那一步,然后判断结点值是否相等,如果相等则返回该结点,特殊情况是没有公共结点的时候。classSolution{public:ListNode*FindFirstC
Cinderella_hou
·
2016-07-11 10:26
牛客网
剑指offer系列
错题记录一
7/10题目:扑克牌顺子,看过剑指offer的一定知道这道题,当时看过了觉得蛮简单,过了几天,在牛客网选这题做的时候却没有一次编译通过,错误都是细节的,好记性不如烂笔头,所以写在这里记录下,希望能够温故知新。凭着理解和记忆,第一次的代码如下classSolution{public:boolIsContinuous(vectornumbers){sort(numbers.begin(),number
Cinderella_hou
·
2016-07-10 14:23
复杂链表复制
剑指offer系列
还剩几道题,在毕业之前继续全部解决,这次来解决下复杂链表的复制问题。
micro_hz
·
2016-05-14 13:00
数据
链表
指针
结构
【
剑指offer系列
】 不用加减乘除做加法___47
题目描述:写一个函数,求两个整数之和。要求不能使用加减乘除分析:既然题目要求不能用加减乘除,那么只能用到位操作了。0和1、1和0异或为1,0和0、1和1异或为00和0、0和1、1和0相与为0,1和1相与为1因此可以用异或做加法,与操作来计算进位以3加5为例,3^5=6,3&5=1,则num=6,carry=1<<1=2;6^2=4,6&2=2,则num=4,carry=4;4^4=0,4&4=4,
u012658346
·
2016-04-11 20:00
【
剑指offer系列
】 圆圈中最后剩下的数字___45
题目描述:把0,1,……,n-1这n个数排成一个圆圈,从数字0开始,每次从这个圆圈中删除第m个数字。求这个圆圈剩下的最后一个数字示例:输入:n=3,m=2,即把0,1,2这三个数字每次删除第二个,删除的依次为1,0,剩下2输出:2分析:经典解法,用环形链表模拟圆圈。当链表中只有一个节点时,退出。但是这种方法空间复杂度较高更高效的解法,分析其中的数学规律。在n个数字中,第一个被删除的是k=(m-1)
u012658346
·
2016-04-11 19:00
剑指offer系列
之15:合并两个有序的链表
题目描述:输入两个递增排序的链表,合并两个链表使合并后的链表满足单调不减。思路1:递归的方法,因为两个链表都是排序的,所以可以先比较两个链表的头结点,这样就确定了合并之后链表的第一个节点,之后再比较两个链表的第二个节点(原来较大值与较小值所属链表的第二个节点进行比较),这样依次就能确定合并链表的第二个、第三个节点,故明显是一个递归的过程/*publicclassListNode{intval;Li
ly_main
·
2016-04-11 19:38
java
剑指offer
【
剑指offer系列
】 n个骰子的点数___43
题目描述:把n个骰子仍在地上,所有骰子朝上一面的点数之和为S。输入n,输出S的所有可能值的出现概率示例:输入:n=1输出:S可能为1~6,每个出现的概率相等,均为0.166666分析:如果基于递归,可能会有很多重复的操作,因此采用循环来实现。对于n个骰子,可能6^n种情况。首先统计每个值出现的次数,然后除以6^n即为每种情况可能的概率从1个骰子开始,循环计算直到计算出所有n个骰子所有可能的情况。对
u012658346
·
2016-04-11 15:00
【
剑指offer系列
】 翻转单词 VS 左旋字符串___42
题目描述:输入一个英文句子,翻转句子中的单词的顺序示例:输入:“theskyisblue”输出:”blueisskythe”分析:可以翻转整个句子,然后翻转其中的每个单词。同时考虑去掉句子中多余的空格(句子首尾不能有空格,单词间只能有一个空格)(leetcode151)代码:voidmyswap(string&s,intstart,intend){ for(inti=start,j=end;i&i
u012658346
·
2016-04-11 14:00
【
剑指offer系列
】 和为S的两个数字___41
题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使它们的和恰好为S。如果有多对数字的和为S,输出其中任意一对即可示例:输入:{1,2,4,7,11}和9输出:2和7分析:可以考虑从数组的两端向中间搜索的方式进行查找,这样时间复杂度为O(n)代码:vectortwoSum(vector&nums,inttarget){ inti=0,j=nums.size()-1; vectorr
u012658346
·
2016-04-11 14:00
【
剑指offer系列
】 数组中只出现一次的数字___40
题目描述:一个数组中除了两个数字只出现了一次外,其它数字都出现了两次。找出这两个数示例:输入:{2,4,3,6,2,3}输出:4,6分析:可以利用相同数字异或为0的思想进行查找代码:boolisSet(intnum,intbit){ return(num&(10; } intgetLastBit(intnum){ intbit=0; while(bitnums){ if(nums.size()<=
u012658346
·
2016-04-11 10:00
【
剑指offer系列
】 二叉树的深度___39
题目描述:输入一棵二叉树,求其深度。树的深度定义为:从根节点到叶子节点的路径长度的最大值示例:分析:对每个节点而言,以该节点为根节点的树的深度为左子树和右子树深度的较大值加1.因此用递归可以很容易的实现代码:intdepth(treeNode*root){ if(root==NULL)return0; returnmax(depth(root->left),depth(root->right))+
u012658346
·
2016-04-11 10:00
【
剑指offer系列
】 数字在排序数组中出现的次数___38
题目描述:统计一个数字在排序数组中出现的次数示例:输入:数组{1,2,3,3,3,3,4,5}和数字3输出:4分析:数组的查找可以利用二分法的思想,分别在数组中找到数字第一次出现和最后一次出现的位置,则出现的次数为二者下标之差。时间复杂度为O(nlgn).代码:intgetFirst(vector&nums,intk,intbegin,intend){ if(begink){ end=mid-1;
u012658346
·
2016-04-11 09:00
【
剑指offer系列
】 替换空格___4
题目描述:实现一个函数,把字符串中的每个空格替换成%20,示例:输入:“Wearehappy”输出:“We%20are%20happy”分析:1)先正向遍历字符串,统计字符串中空格的长度,得到替换后的字符串长度2)反向填充字符串,遇到空格时,则反向填充%20时间复杂度为O(n)代码:voidreplace(charstr[],intlength){ intlen=0; intblankCnt=0;
u012658346
·
2016-04-06 14:00
【
剑指offer系列
】 二维数组中的查找___3
题目描述:在一个二维数组中,每一行的元素都是从左到右递增的,每一列的元素都是从上到下递增的。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:输入数组为:若待查找数字为9,则返回true若待查找数字为5,则返回false代码:boolfind(vector>&nums,inttarget){ intm=nums.size(); if(m==0)returnfalse
u012658346
·
2016-04-06 14:00
剑指offer系列
之六十五:机器人的运动范围
题目描述地上有一个m行和n列的方格。一个机器人从坐标0,0的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格(35,37),因为3+5+3+7=18。但是,它不能进入方格(35,38),因为3+5+3+8=19。请问该机器人能够达到多少个格子?这题实际与上一题“矩阵中的路径”思路是相似的,都是需要创建
u011116672
·
2015-12-21 14:00
剑指offer系列
之六十四:矩阵中的路径
题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。例如abcesfcsadee矩阵中包含一条字符串”bcced”的路径,但是矩阵中不包含”abcb”路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后
u011116672
·
2015-12-21 14:00
剑指offer系列
之六十三:滑动窗口的最大值
题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{2,3,4,2,6,2,5,1}及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5};针对数组{2,3,4,2,6,2,5,1}的滑动窗口有以下6个:{[2,3,4],2,6,2,5,1},{2,[3,4,2],6,2,5,1},{2,3,[4,2,6],2,5,1},{
u011116672
·
2015-12-21 14:00
剑指offer系列
之六十二:数据流中的中位数
题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。根据题目的意思,就是对数据流中的数据进行排序然后得到其中位数。要解决的关键问题是如何在读入数据的时候就对数据进行排序。实际上可以看成是插入排序算法的应用,可以维持一个List集合,保证每次读入数据集合中的数
u011116672
·
2015-12-21 14:00
剑指offer
剑指offer系列
之六十一:二叉树搜索树的第k个节点
题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如,5/\37/\/\2468中,按结点数值大小顺序第三个结点的值为4。因为二叉搜索树是排序的,所以如果需要找出第k个节点只需要进行中序遍历就可以得到第k节点。不过中序遍历的结果就是排序的,所以实质上就是插入排序。可以利用一个集合,在遍历的过程中利用插入排序的算法就能得到第k个节点。下面是这种实现思路的实现代码(已被牛客AC):publicc
u011116672
·
2015-12-20 00:00
剑指offer系列
之六十:序列化二叉树
题目描述请实现两个函数,分别用来序列化和反序列化二叉树首先得理解题目的意思,序列化就是返回一个带有#和逗号的字符串。反序列化就是根据带有#和逗号的字符串返回一棵二叉树。比如对于二叉树1 /\ 23 /\/\ 4567 来讲,序列化的结果是1,2,#,#,3,4,#,7,#,#,5,#,#,。而反序列化的结果则是输出一棵二叉树。下面是具体的实现代码(已被牛客AC):StringSerialize(T
u011116672
·
2015-12-20 00:00
剑指offer
剑指offer系列
之五十九:链表中环的入口节点
题目描述一个链表中包含环,请找出该链表的环的入口结点。此题的思路其实很简单,之所以出现环,是因为在整个链表中出现了重复的节点,而遇到的第一个重复的节点就是环的入口节点。所以可以使用Set来保存遍历到的节点,因为Set集合是不允许出现重复元素的,所以当一个节点被第二次添加的时候,往Set中放元素是失败的。所以可以利用这一点找出第一个重复的元素。基于这种思路的代码比较简洁,代码如下(已被牛客AC):i
u011116672
·
2015-12-18 15:00
剑指offer系列
之五十八:删除链表中重复的节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。例如,链表1->2->3->3->4->4->5处理后为1->2->5因为需要找到重复的节点,所以对链表进行遍历,而且在遍历的过程中需要对每个当前遍历的节点以及后面的节点进行比较直到遇到下一个节点不与当前节点重复。如果下一个节点与当前遍历的节点不重复,则继续遍历,直到把整个链表遍历结束。下面是具
u011116672
·
2015-12-18 15:00
剑指offer系列
之五十七:二叉树的下一个节点
题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。根据中序遍历的特点,要找到一个节点的下一个节点无非就是三种情况:1、有右子树,这时只需要把其右孩子作为下一个遍历的(并不是要找的)节点,然后沿着该节点的左子树(如果有的话)出发,直到遇到叶子节点,那么该叶子节点就是其下一个要找的节点;2、没有右子树,则判断该
u011116672
·
2015-12-18 15:00
剑指offer系列
之五十六:对称二叉树的判断
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。前面有一题是打印输出某二叉树的镜像,回想其实现的思路是:采用层序遍历的思路对每一个遍历的节点,如果其有孩子节点,那么就交换两者。直到遍历的节点没有孩子节点为止,然而此题是对二叉树木镜像的判断,明显是更简单的,只需要进行两个判断:对节点的左孩子与其兄弟节点右孩子的判断以及对节点右孩子
u011116672
·
2015-12-18 15:00
剑指offer系列
之五十五:把二叉树打印成多行
题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。此题实际上与上面一题是重复了,总体还是层序遍历的思路,只不过现在不需要在打印每一行之前对打印顺序进行判断了,所以可以在前面一题的代码进行简单的修改就可以实现题目的要求了。不多说,直接看代码(已被牛客AC):packagecom.rhwayfun.offer; importjava.util.ArrayList; import
u011116672
·
2015-12-18 14:00
剑指offer
剑指offer系列
之五十四:按之字形顺序打印二叉树
题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。此题明显是层序遍历的思路。由于需要按照之字形打印每一层,相当于在打印每一行之前需要判断上一行打印的顺序。比如,如果上一行打印的顺序使从左到右,那么下一行的打印顺序应该是从右到左。实现的这点可以采用奇数行从左到右打印,偶数行从右到左进行打印。还可直接
u011116672
·
2015-12-18 14:00
剑指offer
剑指offer系列
之五十三:字符流中第一个不重复的字符
题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。这题与前面的第一个不重复的字符有些重复了,所以直接看代码(已被牛客AC):packagecom.rhwayfun.off
u011116672
·
2015-12-16 15:00
剑指offer系列
之五十二:表示数值的字符串
题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串”+100”,”5e2”,”-123”,”3.1416”和”-1E-16”都表示数值。但是”12e”,”1a3.14”,”1.2.3”,”+-5”和”12e+4.3”都不是。这题与前面吧字符串转为数值有些类似,但是这里是判断是否一个字符串可以转为数值。从测试用例来看,表示的字符串有三类:整数、浮点数和科学计数法表示的数
u011116672
·
2015-12-16 15:00
剑指offer系列
之五十一:正则表达式匹配
题目描述请实现一个函数用来匹配包括’.’和’*’的正则表达式。模式中的字符’.’表示任意一个字符,而’*’表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串”aaa”与模式”a.a”和”ab*ac*a”匹配,但是与”aa.a”和”ab*a”均不匹配由于只涉及两种正则表达式的匹配,所以关键是需要分清除匹配的所有情况,对于模式串来讲,出现了’.’和
u011116672
·
2015-12-16 14:00
剑指offer
剑指offer系列
之五十:构建乘积数组
题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…A[i-1]*A[i+1]…*A[n-1]。不能使用除法。在代码中已经给出了此题的解题思路,直接看代码(已被牛客AC):packagecom.rhwayfun.offer; publicclassConstructMultipleArray{ /***基本思路是把前半
u011116672
·
2015-12-15 14:00
剑指offer系列
之四十九:数组中重复的数字
题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是重复的数字2或者3。此题的思路还是比较简单的,与之前找出只出现一次的数字的题目有些类似,基本思路还是创建一个Map容器,key是出现的数字,value
u011116672
·
2015-12-15 14:00
剑指offer系列
之四十八:把字符串转成整数
题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数这里的关键是要对输入的字符串进行全面的考虑。包括字符串是否有效的判断、是否是负数以及字符串表示的整数是否越界等问题。对于字符串有效性的判断主要是null以及空串的判定;负数之所以需要判断是因为在计算的时候是有用的;而是否越界的问题也是需要考虑的。因为一个越界的数是不可能计算出来的,那么这时候可以简单返回一个0,表示越界的数。这三
u011116672
·
2015-12-15 14:00
上一页
1
2
3
4
5
6
7
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他