自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

大厂offer宝典

公众号:大厂offer宝典(题目,答案,简历模板,求职分享应有尽有)

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

原创 35. 数组中的逆序对(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~35.数组中的逆序对在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007。 输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的...

2021-01-05 17:53:46 122

原创 31. 整数中1出现的次数(从1到n整数中1出现的次数)(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~31.整数中1出现的次数(从1到n整数中1出现的次数)输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含1的数字有1,10,11和12,1一共出现了5次。1、思路两种方法,一种是从1到n遍历,每次通过对10求余数判断整数的个位数字是不是1,大于10的除以10之后再判断。我们对每个数字都要做除法和求余运算以求出该数字中1出现的次数。如果输入数字n,n有O(logn)位...

2021-01-05 17:53:17 302

原创 36. 两个链表的第一个公共结点(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~36.两个链表的第一个公共结点输入两个链表,找出它们的第一个公共结点。1. 思路这道题和160.Intersection of Two Linked Lists是一样的。都是求两个链表的第一个公共结点。公共结点的样子:该题思考的是,如果一个指针把这首先走一遍链表A再走一遍链表B,另一个指针首先走一遍链表B再走一遍链表A,如果两个指针同时出发,那么他们一定会在两个链表相接处相遇(因为两个指针...

2021-01-05 17:47:35 131

原创 34. 第一个只出现一次的字符(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~34. 第一个只出现一次的字符在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置。1. 思路建立一个哈希表,第一次扫描的时候,统计每个字符的出现次数。第二次扫描的时候,如果该字符出现的次数为1,则返回这个字符的位置。2. 代码...

2021-01-05 17:44:06 116

原创 33. 丑数(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~33. 丑数把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。1. 思路所谓的一个数m是另一个数n的因子,是指n能被m整除,也就是n%m==0。根据丑数的定义,丑数只能被2、3和5整除。根据丑数的定义,丑数应该是另一个丑数乘以2、3或者5的结果(1除外)。因此我们可以创建一个数组,里面的数字是...

2021-01-05 17:41:12 102

原创 32. 把数组排成最小的数(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~32. 把数组排成最小的数输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。1. 思路: 遇到这个题,全排列当然可以做,但是时间复杂度为O(n!)。在这里我们自己定义一个规则,对拼接后的字符串进行比较。排序规则如下:若ab > ba 则 a 大...

2021-01-05 17:36:44 70

原创 30. 连续子数组的最大和(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~30.连续子数组的最大和HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)1. 思路...

2021-01-05 17:33:50 64 1

原创 29. 最小的K个数(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~29.最小的K个数输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。1、思路最简单的方法就是先排序,然后在遍历输出最小的K个数,方法简单粗暴。2. 代码:...

2021-01-05 17:32:54 71

原创 28. 数组中出现超过一半的数字(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~28. 数组中出现超过一半的数字 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。1、思路数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。因此我们可以考虑在遍历数组的时候保存两个值:一个是数组的一个数字,一个是...

2021-01-05 17:32:08 65

原创 27. 字符串的排列(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~27. 字符串的排列输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述:输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。1、思路我们求整个字符串的排列,可以看成两步:首先求所有可能出现在第一个位置的字符,即把第一个字符和后面所有的字符交...

2021-01-05 17:28:42 69

原创 26. 二叉树搜索与双向链表(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~26. 二叉树搜索与双向链表输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。1、思路举例说明:二叉搜索树如上图所示,我们将其转换为配需双向链表。根据二叉搜索树的特点:左结点的值<根结点的值<右结点的值,我们不难发现,使用二叉树的中序遍历出来的数据的数序,就是排序的顺序。因此,首先,确定了二叉搜索树的遍历方法。...

2021-01-03 21:12:28 85

原创 25. 复杂链表的复制(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~25. 复杂链表的复制输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)1、思路深拷贝deepcopy:我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。...

2021-01-03 21:10:06 88

原创 24. 二叉树中和为某一值的路径(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~24. 二叉树中和为某一值的路径输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。(输入 —— 输出){10,5,12,4,7},22 ——[[10,5,7],[10,12]]{10,5,12,4,7},15 —— [ ]1. 思路:深度优先搜索。使用前序遍历,使用两个全局变量result和tmp,result来存放最终...

2021-01-03 21:08:35 79

原创 23. 二叉搜索树的后序遍历序列(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~23.二叉搜索树的后序遍历序列输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。1、思路举例说明:以{5,7,6,9,11,10,8}为例,后序遍历结果的最后一个数字8就是根结点的值。在这个数组中,前3个数字5、7和6都比8小,是值为8的结点的左子树结点;后3个数字9、11和10都比8大,是值为8的结点的右子树结点。...

2021-01-03 21:06:28 71

原创 22. 从上往下打印二叉树(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~22.从上往下打印二叉树从上往下打印出二叉树的每个节点,同层节点从左至右打印。1. 思路举例说明:如上图所示,因为按层打印的顺序决定应该先打印根结点,所以我们从树的根结点开始分析。为了接下来能够打印值为8的结点的两个子结点,我们应该在遍历该结点时把值为6和10的两个结点保存到一个容器里,现在容器内就有两个结点了。按照从左到右打印的要求,我们先取出为6的结点。打印出值6之后把它的值分别为5和7的两个结点...

2021-01-03 21:04:06 73

原创 21. 栈的压入、弹出序列(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~21. 栈的压入、弹出序列输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)1. 思路: 注意看题,4,5,3,2,1 可以是该栈的一种弹出序列,但是4,3,5,1,2完全不可...

2021-01-03 21:02:59 83

原创 20. 包含min函数的栈(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~20. 包含min函数的栈定义栈的数据结构,请在类型中实现一个能够得到栈最小元素的min函数。1. 思路:使用两个stack,一个为数据栈,另一个为辅助栈。数据栈用于存储所有数据,辅助栈用于存储最小值。比如:入栈的时候:首先往空的数据栈里压入数字3,显然现在3是最小值,我们也把最小值压入辅助栈。接下来往数据栈里压入数字4。由于4大于之前的最小值,因此我们只要入数据栈,不压入辅助栈。...

2021-01-03 21:01:49 68

原创 19. 顺时针打印矩阵(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~19. 顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵:则依次打印出数组:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10。1. 思路:将结果存入vector数组,从左到右,再从上到下,再从右到左,最后从下到上遍历。2. 代码+答案:题目变型:给定一个数字2,打印矩阵:给定一个数字3,打印矩...

2021-01-03 21:01:17 72

原创 18. 二叉树的镜像(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~18. 二叉树的镜像 操作给定的二叉树,将其变换为源二叉树的镜像。如下图所示:1. 思路先交换根节点的两个子结点之后,我们注意到值为10、6的结点的子结点仍然保持不变,因此我们还需要交换这两个结点的左右子结点。做完这两次交换之后,我们已经遍历完所有的非叶结点。此时变换之后的树刚好就是原始树的镜像。交换示意图如下所示:2. 代码+结果:...

2021-01-03 20:57:40 61

原创 17. 树的子结构(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~17. 树的子结构 输入两颗二叉树A,B,判断B是不是A的子结构。(PS:我们约定空树不是任意一个树的子结构)。1. 思路:要查找树A中是否存在和树B结构一样的子树,我们可以分为两步: a. 第一步在树A中找到和B的根结点的值一样的结点R. b. 第二步再判断树A中以R为根节点的子树是不是包含和树B一样的结构。这里使用递归的方法即可。2. 代码+结果:...

2021-01-03 20:56:53 62

原创 16. 合并两个排序链表(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~16. 合并两个排序链表 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。1. 思路:先判断输入的链表是否为空的指针。如果第一个链表为空,则直接返回第二个链表;如果第二个链表为空,则直接返回第一个链表。如果两个链表都是空链表,合并的结果是得到一个空链表。两个链表都是排序好的,我们只需要从头遍历链表,判断当前指针,哪个链表中的值小,即赋给合并链表指针即可。使用递...

2021-01-02 21:34:17 76

原创 15. 反转链表(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~15. 反转链表输入一个链表,反转链表后,输出链表的所有元素。1. 思路:这里可以采用辅助指针的方式来进行历求解,以下面的链表为例具体分析如下:1-首先我们需要定义三个指针,分别指向当前结点(cur)、前一结点(prev)、后一节点(next)2-然后开始从前往后进行遍历,在遍历的过程中对指针进行反转第一次遍历:将cur->next赋给next指...

2021-01-02 21:33:34 99

原创 14. 链表中倒数第k个结点(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~14. 链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。1. 思路:我们可以定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。效果示意图,以链表总共6个结点,求倒数第3个结点为...

2021-01-02 21:32:07 89

原创 14. 链表中倒数第k个结点(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~14. 链表中倒数第k个结点 输入一个链表,输出该链表中倒数第k个结点。1. 思路:我们可以定义两个指针。第一个指针从链表的头指针开始遍历向前走k-1,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离保持在k-1,当第一个(走在前面的)指针到达链表的尾结点时,第二个指针(走在后面的)指针正好是倒数第k个结点。效果示意图,以链表总共6个结点,求倒数第3个结点为...

2021-01-02 21:31:37 71

原创 13. 调整数组的顺序使奇数位于偶数前面(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~13. 调整数组的顺序使奇数位于偶数前面 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。1. 思路:2. 代码 + 答案:...

2021-01-02 21:30:39 74

原创 12. 数值的整数次方(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~12. 数值的整数次方: 给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。1. 思路: double类型精度更高,不懂的先简单理解为小数,int为整数。比如题目,double一个 1.52, int一个 2. 要求:(1.52)^2当指数为负数的时候,可以先对指数求绝对值,然后算出次方的结果之后再取倒数。如果底数为0,则直接返回0。此时的次方...

2021-01-02 21:29:03 100

原创 10. 矩形覆盖(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~10.矩形覆盖我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?1. 思路:以2x8的矩形为例。示意图如下: 我们先把2x8的覆盖方法记为f(8)。用第一个1x2小矩阵覆盖大矩形的最左边时有两个选择,竖着放或者横着放。当竖着放的时候,右边还剩下2x7的区域,这种情况下的覆盖方法记为f(7)。接下来考虑横...

2021-01-02 21:23:41 117

原创 9. 变态跳台阶(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~9. 变态跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1. 思路: 一级台阶:1种方式,1 二级台阶:2种方式,1,1. 2 三级台阶:4种方式,1,1,1。1,2. 2,1. 3 四级台阶:8种方式,1,1,1,1。1,1,2. 2,1,1. 1,2,1. 2,2. 1,3. 3,1. 4...

2021-01-02 21:22:27 114

原创 8. 跳台阶(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~8. 跳台阶 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。1. 思路: 若只有一级台阶:一种跳法 两级台阶:两种跳法(1+1 / 2) 三级台阶:三种跳法(1+1+1 / 1+2 / 2+1) 四级台阶:五种跳法:1+1+1+1 / 1+1+2 / 1+2+1 / 2+1+1 / 2+2 我们来讨论一般情况...

2021-01-02 21:20:58 80

原创 7. 裴波那契数列(剑指offer)

关注公众号(落叶归根的猪),获取一手资源~7.裴波那契数列 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项。(n<=39)斐波那契数列公式为:1. 思路这道题递归很好写,但是存在很严重的效率问题。我们以求解f(10)为例类分析递归的求解过程。想求f(10),需要先求得f(9)和f(8)。同样,想求得f(9),需要先求的f(8)和f(7)....我们可以用树形结构来表示这种依赖关系,如下图所示:...

2021-01-02 21:19:52 122

空空如也

空空如也

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

TA关注的人

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