自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (2)
  • 收藏
  • 关注

原创 剑指Offer面试题61:扑克牌中的顺序

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

2019-05-22 09:48:14 172

原创 剑指Offer面试题62:孩子们的游戏(圆圈中最后剩下的数字)

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

2019-05-22 09:14:26 147

原创 剑指Offer面试题65:不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。解题思路: 考查位运算,模拟十进制加法运算解题代码: 1.class Solution {public: int Add(int num1, int num2) { //考查位运算 while(num2!=0) //当进位不为0...

2019-05-21 22:20:18 125

原创 剑指Offer面试题64:求1+2+3+ ...+n

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。也不得使用while、for、 if、 else 、switch 、case等关键字及条件判断语句(A? B:C)解题思路:解题代码: 1.利用&& 运算符的短路性质,递归求和。 &&就是逻辑与,逻辑与有个短路特点,前面为假,后面不计算...

2019-05-21 22:03:02 291

原创 剑指Offer面试题67:把字符串转化成整数

题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。解题思路:解题代码: 1.class Solution {public: int StrToInt(string str) { ...

2019-05-21 21:20:40 137

原创 剑指Offer面试题57:和为s的数字

题目一(和为s的数字):输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。解题思路: 滑动窗口法解题代码: class Solution {public: vector<int> FindNumbersWithSum(vector<int> array,i...

2019-05-21 20:53:52 131

原创 剑指Offer面试题58:翻转字符串

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

2019-05-21 20:52:04 154

原创 剑指Offer面试题59:队列的最大值(滑动窗口的最大值)

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

2019-05-20 20:47:04 257

原创 剑指Offer面试题55:二叉树的深度

题目一输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。解题思路:解题代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NUL...

2019-05-20 20:46:24 133

原创 剑指Offer面试题54:二叉搜索树的第K大节点

题目描述给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。解题思路: 考察的是中序遍历二叉树,中序遍历即为二叉搜索树的顺序。解题代码: 解法一/*struct TreeNode { int val; struct TreeNode *left;...

2019-05-20 20:45:51 127

原创 剑指Offer面试题53:数字在排序数组中出现的次数

题目一(数字在排序数组中出现的次数): 统计一个数字在排序数组中出现的次数。解题思路:考查二分查找的使用解题代码: 1.没通过()这种思路是利用二分查找找到一个k(我们要找的数字),然后分别向前向后查找第一个k和最后一个k的位置,然后相减。class Solution {public: int GetNumberOfK(vector&l...

2019-05-20 20:45:14 129

原创 剑指Offer面试题56:数组中数字出现的次数

题目一(数组中数字出现的次数):一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。解题思路:在前面学习过map,set容器的用法之后,这里想到用基于哈希表的unordered_map容器 更厉害的操作:位运算!!!解题代码: 1.基于unordered_map容器 (这是...

2019-05-19 21:43:39 419

原创 剑指Offer面试题52:两个链表的第一个公共节点

题目描述输入两个链表,找出它们的第一个公共结点。解题思路:首先是暴力法。其次要去想想有没有更好的解法。 利用栈的思想是,以此把两个链表的节点放入两个栈中,然后以此从栈顶取出节点进行比较,如果相同,则弹出该节点,接着比较下一个节点,直到找到最后一个相同的节点。 也可以不用stack来实现。因为有公共节点的链表...

2019-05-19 17:59:20 204

原创 剑指Offer面试题51:数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%100的数据...

2019-05-19 17:10:49 392

原创 剑指Offer面试题50:第一个只出现一次的字符

题目一:在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).解题思路:这里应该是考察set,map,unordered_set,unordered_map,multiset,multimap等容器的用法。 set和multiset会根据特定...

2019-05-18 19:58:42 150

原创 剑指Offer面试题49:丑数

题目描述把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。解题思路:逐个判断每个数是否为丑数。然后计数到第N个解题代码: 1.笨方法class Solution {public: int GetUglyNumber_Sol...

2019-05-18 17:56:44 156

原创 剑指Offer面试题45:把数组排成最小的数

题目描述输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。解题思路:首先想到的是把数字转化成字符串,然后全排列。在比较大小。(要想到全排列的思想是基于交换实现的,每一位和后面的交换)解题代码: 1.基于全排列的方法(回头补上,顺便复习一下字符串全...

2019-05-18 17:07:49 249

原创 剑指Offer面试题43:1~n整数中1出现的次数

题目描述求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。解题思路:解题代码: 1.一般的方法clas...

2019-05-17 23:03:36 208

原创 剑指Offer面试题42:连续子数组的最大和

题目描述(重要)HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。给一个数组,返回它的最大...

2019-05-17 21:58:16 280

原创 剑指Offer面试题40:最小的K个数

题目描述(很重要的一题)输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。解题思路:看到题首先想到的是排序的方法,但是针对这种题面试官肯定希望你有更好的额解法,因为排序最好的解法为O(nlogn)的复杂度,面试官一定想要O(n)的解法解题代码: 1.基于排序 复杂度 O(nlogn)clas...

2019-05-17 21:22:21 188

原创 剑指Offer面试题39:数组中出现次数超过一半的数字

题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。解题思路:解题代码: 1.基于排序和计数 复杂度O(nlogn)class Solution {public: int MoreThanH...

2019-05-16 12:16:08 134

原创 剑指Offer面试题38:字符串的排列

题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。解题思路:字符串的全排列问题,首先想到的是递归实现。在刷LeetCode的时候是数字的全排列,当时有一种解法是基于交换的方法...

2019-05-16 11:39:22 215

原创 剑指Offer面试题41:数据流中的中位数

题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。解题思路:由于数据是从一个数据流中读出来的,因而数据的数目随着时间的变化而增加。如果用一个数据容器...

2019-05-15 22:08:49 131

原创 剑指Offer面试题37:序列化二叉树

题目描述请实现两个函数,分别用来序列化和反序列化二叉树解题思路:1. 对于序列化:使用前序遍历,递归的将二叉树的值转化为字符,并且在每次二叉树的结点不为空时,在转化val所得的字符之后添加一个','作为分割。对于空节点则以 '#' 代替。2. 对于反序列化:按照前序顺序,递归的使用字符串中的字符创建一个二叉树(特别注意:在递归时,递归函数的参数一定要是char ** ,这样才能...

2019-05-15 16:12:22 224

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

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。解题思路:解题代码:/*struct TreeLinkNode { int val; struct TreeLinkNode *left; struct TreeLinkNode *right; struc...

2019-05-15 14:42:18 93

原创 剑指Offer面试题36:二叉搜索树与双向链表

题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。解题思路:解题代码:/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NU...

2019-05-15 14:41:11 144

原创 剑指Offer面试题35:复杂链表的复制

题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)解题思路:解题代码:三部法:/*struct RandomListNode { int label; struct RandomLis...

2019-05-13 21:57:39 112

原创 剑指Offer面试题34:二叉树中和为某一值的路径

题目描述输入一颗二叉树的跟节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(注意: 在返回值的list中,数组长度大的数组靠前)解题思路:想到了用递归实现,先序遍历二叉树,路径上遇到的每一个节点保存,并累加求和,直到叶子节点,判断路径和是否等于我们输入的数,但是题的意思是数组长度大的数组靠前,也没出来容器...

2019-05-12 16:06:34 89

原创 剑指Offer面试题33:二叉搜索树的后序遍历序列

题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。解题思路:关键首先理解什么是二叉搜索树。一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。 节点的右子树只包含大于当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。解题代码:递归解class So...

2019-05-12 13:54:15 226

原创 剑指Offer面试题32:从上往下打印二叉树

题目一从上往下打印出二叉树的每个节点,同层节点从左至右打印。解题思路:该题考察的是二叉树的遍历算法,不同于我们熟悉的前序、中序、后序遍历算法,该题考察层序遍历算法,不能仅靠我们的递归实现。这里需要用一个队列来帮助我们实现,每次访问一个节点,存入队列,然后操作,然后将该节点的左右孩子存入队列。解题代码:/*struct TreeNode { int val; struct...

2019-05-12 13:53:44 292

原创 剑指Offer面试题31:栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)解题思路:模拟堆栈操作:将原数列依次压栈,栈顶元素与所给出栈队列相比,如果相同...

2019-05-12 13:53:17 101

原创 剑指Offer面试题30:包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路:刚开始看到这个题还以为是要自己实现栈的底层数据结构,原来是借助stack栈的数据结构设计算法即可,一般笔试题也不会考写底层实现,倒是面试的时候有可能会考实现底层数据结构,如实现string类,写一个Linklist等。该题的思路是借助一个辅助栈来维护最小的元素的存储。...

2019-05-12 13:50:49 108

原创 剑指Offer面试题29:顺时针打印矩阵

题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.解题思路:本题考查点为:数组解题代码:class Solution {public: ve...

2019-05-12 13:49:12 111

原创 剑指Offer面试题26:数的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路:第一步:在树A中查找与B根结点的值一样的节点,这实际上就是树的遍历。对二叉树熟悉的应该知道,可以用递归的方法遍历,也可以用循环的方法遍历,递归的方法实现代码较简洁。第二步:判断树A中以R为根结点的子树是不是和树B具有相同的结构。同样我们也可以用递归的思路来考虑:如果节点R的值...

2019-05-07 23:25:57 136

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

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。解题思路:解决这个问题可以分三步。(1)第一步是确定一个链表中是否包含环。我们可以用两个指针来解决这个问题。定义两个指针,同时从链表的头结点出发,一个指针一次走一步,另一个指针一次走两步。如果走得快的指针追上了走得慢的指针,那么链表就包含环;吐过走得快得快的指针走到了链表的末尾(ListNode的ne...

2019-05-07 21:01:58 146

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

题目描述输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。解题思路:题目不难,重要的是代码的完整性与鲁棒性,新建一个虚拟头结点和一个cur结点,和两个指针分别指向两个待合并的链表头,然后依次比较结点,将小的节点挂到头结点后面,然后维护cur结点,指向已排好序的链表尾。解题代码:/*struct ListNode { int val;...

2019-05-06 21:07:16 85

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

题目描述输入一个链表,反转链表后,输出新链表的表头。解题思路:题目不难,重要的是代码的完整性与鲁棒性,建立三个指针来维护信息,pre 、cur、next指针。链表类题重要的是要回利用指针保存记录信息。然后依次更新指针的指向,从而实现我们的算法。解题代码:/*struct ListNode { int val; struct ListNode *next; ListNode...

2019-05-06 21:01:49 334

原创 剑指Offer面试题22:链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。解题思路:建立两个指针,快慢指针法。链表类题注意要善于运用指针,维护我们想要保存的信息(节点)。解题代码: 刚开始出错是因为没有注意到输入的k是无符号数,而自己写的代码while循环中k--,当k=0时,k--,k为4294967259(无符号的0xFFFFFFFF),因此while循环会一直进行。所以我们这里应该用for循环。...

2019-05-06 20:55:07 127

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

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路:目前为止只想到如下的笨方法,好在通过了测试用例,复杂度为O(n)级别,但是需要额外的空间。回头看看有没有更好的解法。解题代码:class Solution {public: void...

2019-05-05 22:06:27 80

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

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。解题思路:关键点是:表示数值得字符串遵循的模式A[.[B]][e|EC]或者.B[e|EC] ...

2019-05-05 21:11:04 246

标准粒子群算法代码PSO

大学教授编写的粒子群算法代码,MATLAB实现。通用性好,函数参数模块化,有详细的注释,便于移值。直接定义自己的目标函数(适应度函数、代价函数)即可使用。

2019-03-25

LeetCode分类详细题解

本书的目标读者是准备去北美找工作的码农,也适用于在国内找工作的码农,以及刚接触 ACM 算法竞赛的新手。本书包含了 LeetCode Online Judge(http://leetcode.com/onlinejudge) 所有题目的答案,所有代码经过精心编写,编码规范良好,适合读者反复揣摩,模仿,甚至在纸上默写。全书的代码,使用 C++ 11 的编写,并在 LeetCode Online Judge 上测试通过。

2019-03-23

空空如也

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

TA关注的人

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