自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

哇咔咔的升级之路~

2333333333333333333333333333333

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

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

请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配 解法:注意题目中说的出现0次,例如ab*aa若*代表出现0次的话,则表示为字符串aaa。分析题目一共...

2018-11-12 10:12:35 480

原创 剑指offer 15 删除链表的节点

题目一:给定单向链表的头指针和一个节点指针,定义一个函数在O(1)的时间内删除该节点 解法:O(1)的时间删除单向链表中的一个节点,题目关键在于它给了你一个节点指针,而且这个节点指针指向的 节点就是需要删除的那个节点。基于这个理解,我们就可以在O(1)的时间内删除,假设待删除的节点为i,i的下一个节点为j,我们可以将j的内容复制到i然后将 i->next = j->next即可实现删...

2018-11-12 09:57:58 302

原创 剑指offer 14 数值的整数次方

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。 解法: 首先明确下图的公式  所以我们可以使用递归去求解这个问题,同时要注意当指数为负数时候对结果的影响 class Solution { public: double Power(double base, int exponent) { bool flag_of_...

2018-11-12 09:38:17 247

原创 剑指offer 13 二进制中1的个数

 输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。 解法:十进制的数表示为二进制的数,当我们将这个数减1 的时候,观察到最右边的一个1会变成0,如果它右边有0的话就全变成了1,类似我们做减法的那种借位,此时我们将减1之后的数与原数进行与运算,因为左边的数并没有改变,因此与运算并没有改变高位的数值,只是将最右边的1变成了0,我们只需要数进行了多少次这样的运算就代表有多少个1. 但...

2018-11-05 17:13:04 193

原创 剑指offer 12 剪绳子

题目一:给你一根长度为n的绳子,请把绳子剪成m段 (m和n都是整数,n>1并且m>1)每段绳子的长度记为k[0],k[1],...,k[m].请问k[0]*k[1]*...*k[m]可能的最大乘积是多少?例如,当绳子的长度为8时,我们把它剪成长度分别为2,3,3的三段,此时得到的最大乘积是18 解法:每一次我们下刀剪绳子都把绳子分成了两段,一段为i ,一段为n-i,因此我们可以写成如...

2018-11-05 16:46:38 181

原创 剑指offer 11 机器人的运动范围

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

2018-11-04 16:28:32 151

原创 剑指offer 10 矩阵中的路径

题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则之后不能再次进入这个格子。 例如 a b c e s f c s a d e e 这样的3 X 4 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字...

2018-10-31 20:20:09 219

原创 剑指offer 9.旋转数组的最小数字

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。 输入一个非减排序的数组的一个旋转,输出旋转数组的最小元素。 例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。 NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。 解法:最简单的方法,遍历整个数组,即可找到最小值,但是时间复杂度为O(n),而且没有利用到旋转数组的特性。我们观察到旋转...

2018-10-29 17:15:30 156

原创 剑指offer 8.跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 解法:可以看作斐波那契数列的另一种行式,对于n大于2的台阶,它可以从n-1级台阶的方法 中跳1阶 即可到达,也可以从n-2级台阶的方法中跳2阶到达。所以上一个n级台阶的跳法f[n] = f[n-1]+f[n-2].但是注意n=2时候f[n]=2,而不是f[1]+f[0] = 1...

2018-10-24 19:38:41 170

原创 剑指offer 7.斐波那契数列

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 解法:可以利用递归调用来写,但是时间和空间消耗大,观察斐波那契数列生成方式,中间一些值是重复计算的,我们可以用vector保存起来,就避免了重复计算。时间复杂度O(n). 关于vector的使用:不能直接赋值例如:result[i] = 1;程序编译会报错vector s...

2018-10-24 19:15:31 215

原创 剑指offer 6.用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。 解法:栈的特性为先进后出,而队列的进出顺序却是先进先出,插入元素时候我们很好理解,就直接入栈就好了,关键是删除元素时候,原本第一个进去的元素应该第一个出来,可是作为栈只能弹出最后一个进入的元素,这个时候我们就需要用到第二个栈stack2,将stack1中的元素挨个弹出然后压入stack2中,这样从stack2中...

2018-10-24 16:50:55 154

原创 剑指offer 5.二叉树的下一个结点

给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。  解法:画出二叉树的结构图和利用具体的例子找出规律如下: 1.如果一个子树有右子树,那它的下一个节点就是右子树的最左节点 2.如果一个子树没有右子树,它是父节点的左子节点,那它的下一个节点就是父节点 3.如果一个节点既没有右子树,它还是父节点的右子节点,那...

2018-10-23 19:44:35 141

原创 剑指offer 4.重建二叉树

输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 class Solution { public: TreeNode* reConstructBinaryTree(vector<int> ...

2018-10-22 17:03:39 143

原创 剑指offer 3.从尾到头打印链表

输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。 解法:根据题目要求,我们可以想到栈的特性符合题目要求!  class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { std::stack <ListNode*> nodes; ...

2018-10-22 17:01:48 152

原创 剑指offer 2.替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 解法:  class Solution { public: void replaceSpace(char *str,int length) { if (str == nullptr || length < 0) ...

2018-10-22 16:58:46 163

原创 剑指offer 1.二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。  解法:可以从上到下从左到右进行遍历,但是只要的时间复杂度就肯定上去了,我们可以画图观察一下题目所说的二维矩阵:首先从矩阵右上角开始查找,如果目标值小于该数字,那么即可删掉该数字所在的列,如果目标值大于该...

2018-10-22 16:55:42 160

原创 LeetCode 122. 买卖股票的最佳时机 II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 示例 1: 输入: [7,1,5,3,6,4] 输出: 7 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔...

2018-10-22 16:49:06 157

原创 LeetCode 121. 买卖股票的最佳时机

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。 如果你最多只允许完成一笔交易(即买入和卖出一支股票),设计一个算法来计算你所能获取的最大利润。 注意你不能在买入股票前卖出股票。 示例 1: 输入: [7,1,5,3,6,4] 输出: 5 解释: 在第 2 天(股票价格 = 1)的时候买入,在第 5 天(股票价格 = 6)的时候卖出,最大利润 = 6-1 = 5 。 ...

2018-10-22 16:45:52 155

原创 Leetcode905. 按奇偶排序数组

给定一个非负整数数组 A,返回一个由 A 的所有偶数元素组成的数组,后面跟 A 的所有奇数元素。 你可以返回满足此条件的任何数组作为答案。 示例: 输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。 提示:     0<= A.length <= 5000   0<=A[i]&l...

2018-10-22 16:39:10 360

原创 Leetcode15 三数之和

给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 例如, 给定数组 nums = [-1, 0, 1, 2, -1, -4], 满足要求的三元组集合为: [ [-1, 0, 1], [-1, -1, 2] ] 解法:首先对数组排序...

2018-10-22 16:29:40 192

原创 单词查找(公司笔试题)

题目:单词查找 分析:题目限制了字母在词典中只可以上下左右相邻,那就意味着不能左上、右上、左下、右下、那就 比起八个方向的就更加简单。具体实现就深搜呗~具体细节在代码的注释 测试样例: 5 5 3 hello help high p a b h m f h e c p o i l l h b g h o n h x c m l  // wordfind.cpp: 定义控制台应用程...

2018-09-21 15:05:36 458

原创 Leetcode 26. 删除排序数组中的重复项

解题思路:已经排序好的数组,temp保存的是中间变量用于比较,当找到重复的值用erease()函数进行删除,此时数组的下标已经改变,故用i--调整位置。 原题: 给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。 思考:在循环中对下...

2018-09-20 15:18:46 172

原创 HDOJ 2072 单词数

单词数Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 61852    Accepted Submission(s): 15345Problem Descriptionlily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情...

2018-04-03 16:36:52 222

原创 Python读取xml文件使用Python语言及其应用一书的坑

晚上学习Python读取XML文件,在本书的162页,代码如下:第二行对于文件的读取,使用Pycharm新建的XML文件是不自带.XML后缀名的,编译就会一直报错。修改代码如下:import xml.etree.ElementTree as ET tree = ET.ElementTree(file='test') root = tree.getroot() print(root.tag) for...

2018-03-14 20:50:38 541

原创 Shopping

D - Shopping Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Description Saya and Kudo go shopping together. You can assume the street as a s

2013-12-16 20:27:17 716

原创 Phone Number

A - Problem A :Phone Number Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%lld & %llu Submit Status Description We know that if a phone number A is another phone numbe

2013-12-16 20:26:08 1059

原创 面积

面积 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 24   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font Siz

2013-12-12 20:22:09 1307

原创 货币系统

货币系统 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 11   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font S

2013-12-09 19:17:26 1433

原创 分组背包

分组背包 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 14   Accepted Submission(s) : 6 Font: Times New Roman | Verdana | Georgia Font S

2013-12-04 20:53:05 1064

原创 取余运算

取余运算 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 6   Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Si

2013-12-04 20:25:47 868

原创 矩阵旋转

矩阵旋转 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 30   Accepted Submission(s) : 10 Font: Times New Roman | Verdana | Georgia Font

2013-12-03 21:29:07 762

原创 集合的划分

集合的划分 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 19   Accepted Submission(s) : 7 Font: Times New Roman | Verdana | Georgia Font

2013-12-02 20:29:11 1094

原创 潜水员

潜水员 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 19   Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Si

2013-12-02 19:42:15 862

原创 二叉树遍历

二叉树遍历 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 5   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font S

2013-12-01 20:15:52 765

原创 已知后序遍历和中序遍历求前序遍历

而已知后序遍历和中序遍历求前序遍历的过程差不多,但由于后序遍历是最后才访问根节点的  所以要从后开始搜索,例如上面的例子,后序遍历为 gbdehfca,中序遍历为 dgbaechf  后序遍历中的最后一个元素是根节点,a,然后查找中序中a的位置  把中序遍历分成 dgb a echf,而因为节点个数要对应  后序遍历分为 gbd ehfc a,gbd为左子树,ehfc为右子树,这样又可以递

2013-11-28 19:52:15 2426

原创 求后序遍历

求后序遍历 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 3   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font S

2013-11-28 19:48:43 719

原创 混合背包

混合背包 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 5   Accepted Submission(s) : 2 Font: Times New Roman | Verdana | Georgia Font Si

2013-11-27 20:02:37 1524

原创 hanoi双塔

hanoi双塔 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 6   Accepted Submission(s) : 3 Font: Times New Roman | Verdana | Georgia Font

2013-11-26 21:14:52 982

原创 小球

小球 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 18   Accepted Submission(s) : 5 Font: Times New Roman | Verdana | Georgia Font Siz

2013-11-26 20:25:07 832

原创 奇怪的电梯

奇怪的电梯 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other) Total Submission(s) : 9   Accepted Submission(s) : 4 Font: Times New Roman | Verdana | Georgia Font S

2013-11-25 20:07:40 832

空空如也

空空如也

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

TA关注的人

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