自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 KMP算法实现

  KMP算法主要是用来解决在一个字符串中是否包含另一个字符串的问题,即在字符串str1中是否包含有str2,如果包含,返回str2在str1中的起始位置,如果不包含,返回-1。KMP算法主要通过一个next数组实现匹配加速,next数组记录下str2中对应每一个字符相应的最长前缀和最长后缀相匹配的长度,每次失配后不再从头开始匹配,而是通过next数组跳至str2中相应位置继续往下匹配,...

2018-02-28 09:29:00 97

转载 快速排序的非递归实现

  快速排序的递归实现在数据量非常大的时候往往因为递归的层数过多而导致栈溢出,可以考虑模拟递归栈的调用,用一个堆空间中的辅助栈保存每次计算的中间参数,将快排改为非递归版本,实现如下: 1 int Partition(vector<int> &numbers, int begin, int end) 2 { 3 int tmp=numbers[b...

2018-02-27 16:57:00 90

转载 二叉树的前中后序遍历非递归实现

1、前序遍历非递归实现 1 class Solution { 2 public: 3 /* 4 * @param root: A Tree 5 * @return: Preorder in ArrayList which contains node values. 6 */ 7 vector<int&gt...

2018-02-06 14:07:00 147

转载 LintCode:统计数字

计算数字k在0到n中的出现的次数,k可能是0~9的一个值例如n=12,k=1,在[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],我们发现1出现了5次(1, 10, 11, 12)思路:参考《编程之美》中提供的求数字1的个数的解法:http://www.cnblogs.com/jeysin/p/8134450.htm...

2018-02-05 23:00:00 124

转载 LintCode:尾部的零

设计一个算法,计算出n阶乘中尾部零的个数样例11! = 39916800,因此应该返回 2挑战O(logN)的时间复杂度思路:  1、直接计算n!的结果,然后统计0的个数。会溢出  2、考虑到0是由2x5得到的,所以分别统计1..n所有元素中包含的因子2和5的个数,考虑到2的个数一定会大于5的个数,所以只要统计5的个数就好,但...

2018-02-04 23:29:00 41

转载 按之字形顺序打印二叉树

题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。思路:基于按层遍历,增加一个flag标记,如果是偶数层就置逆以后再输出 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode ...

2018-02-04 11:24:00 57

转载 二叉树中序遍历的下一个节点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:分多种情况讨论 1 /* 2 struct TreeLinkNode { 3 int val; 4 struct TreeLinkNode *left; 5 struct ...

2018-02-04 11:03:00 146

转载 二叉搜索树的第k个节点

题目描述给定一颗二叉搜索树,请找出其中的第k大的结点。例如, 5 / \ 3 7 /\ /\ 2 4 6 8 中,按结点数值大小顺序第三个结点的值为4。思路:中序遍历 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 struct TreeNo...

2018-02-03 23:07:00 65

转载 圆圈中最后剩下的数字

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数......

2018-02-03 22:41:00 63

转载 滑动窗口的最大值

题目描述给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组{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,...

2018-02-02 13:37:00 64

转载 按行打印二叉树

题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行思路:维护两个指针:last和nlast,其中,last始终指向当前打印行的最后一个节点,nlast始终指向队列中最后一个节点 1 /* 2 struct TreeNode { 3 int val; 4 struct TreeNode *left; 5 ...

2018-02-02 12:45:00 345

转载 字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符思路:一个数组记录下当前字符流,一个哈希表记录下每个字符出现的次数。插入的时间复杂度是O(1),...

2018-02-02 12:33:00 75

转载 构建积乘数组

题目描述给定一个数组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]。不能使用除法思路:不能使用除法,则根据A由上至下、由下至上连乘 1 class Solution { 2 public: 3 vector<i...

2018-02-02 12:14:00 132

转载 数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路:通过交换使所有数字都在其对应序号上,交换冲突的即为重复数字,时间复杂度为O(n),空间复杂度...

2018-02-02 10:18:00 79

转载 把字符串转换成整数

题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0思路:多考虑特殊情况 1 bool isValid(string &str) 2 { 3 for(int ...

2018-02-02 09:54:00 65

转载 不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:利用“异或”和“与”操作模拟加法和进位操作 1 class Solution { 2 public: 3 int Add(int num1, int num2) 4 { 5    int carry=num1 & num...

2018-02-01 15:26:00 65

转载 求1+2+3+...+n的非常规方法

题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:  1、利用构造函数,定义静态变量 1 class Add 2 { 3 public: 4 Add() 5 { 6 ++n; 7 ...

2018-02-01 14:11:00 141

转载 扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11...

2018-02-01 12:32:00 48

转载 翻转单词顺序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?...

2018-02-01 12:18:00 74

转载 左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:解法1:字符串从第n为分割成两部分,前后交换,时间复杂度O(n)...

2018-02-01 11:56:00 73

转载 和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,是的他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:两个指针,分别从前往后,从后往前查找,时间复杂度为O(n) 1 class Solution { 2 public: 3 vector<int&g...

2018-02-01 11:48:00 71

空空如也

空空如也

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

TA关注的人

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