自定义博客皮肤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)
  • 收藏
  • 关注

原创 面试资料归档

https://github.com/0voice/interview_internal_reference#102019年最新总结,阿里,腾讯,百度,美团,头条等技术面试题目,以及答案,专家出题人分析汇总。持续更新中。https://github.com/xingshaocheng/architect-awesome/blob/master/README.md#%E6%82%B2%E8%A7%82%E9%94%81后端架构师技术图谱https://frank-lam.github.io/fulls

2020-07-13 09:43:43 246

原创 剑指offer刷题记录——知识迁移能力

二叉树的深度题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。实现思路层次遍历具体实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), le...

2020-02-28 22:57:04 148

原创 剑指offer刷题记录——时间效率

数组中出现次数超过一半的数字题目描述数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。实现思路直观的解法就是借用容器,遍历整个数组然后记录出现次数再加上判断语句,但这要要耗费大量的空间。试着思考怎么快速找到一个数组中出现次数超过数...

2020-02-28 16:25:21 245

原创 剑指offer刷题记录——分解让复杂问题简单

复杂链表的复制题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)实现思路由于该链表不是普通的链表,复制过程中还要对特殊指针进行复制,所以我们在原链表上操作要分多次。刚开始的时候首先将链表上的节点值进行复制,并放置在对应结...

2020-02-27 16:27:07 173

原创 剑指offer刷题记录——举例让抽象具体化

包含main函数的栈题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。注意:保证测试中不会当栈为空的时候,对栈调用pop()或者min()或者top()方法。实现思路这个题目主要考察的还是如何用O(1)的方法得到栈中所含最小元素的min函数。首先需要一个栈存储栈元素实现相应的栈操作,而为了实现min函数显然要引入一个辅助栈。过...

2020-02-26 17:17:46 89

原创 剑指offer刷题记录——抽象建模能力

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

2020-02-24 16:49:31 125

原创 剑指offer刷题记录——代码的鲁棒性

链表中倒数第k个结点题目描述输入一个链表,输出该链表中倒数第k个结点。实现思路比较直接的办法就是用一指针先遍历整个链表,求得链表长度并减去k,就能知道所求的结点为正数第几个了。然后再用另一指针从头出发遍历即可到达。还有一种做法是利用栈先进后出的规则,跟倒数是一个意思。依次将结点从头到尾压入栈中,最后弹出k次就能得到。还有一个办法是利用双指针,先让一指针走k-1步,到达第k个结点,还剩l...

2020-02-24 15:53:40 78

原创 剑指offer刷题记录——动态规划与贪婪

剪绳子题目描述给你一根长度为n的绳子,请把绳子剪成整数长的m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为k[0],k[1],…,k[m]。请问k[0]xk[1]x…xk[m]可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。实现思路首先是对目标进行分析,列出前几种长度的绳子的情况。根据规律发现,我们需...

2020-02-23 15:34:05 165

原创 剑指offer刷题记录——画图让抽象形象化

顺时针打印矩阵题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下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.实现思路想来想去觉得自己只能做出多层嵌套的办法,感觉太复杂了肯定不是题解于是乎看了解答发现确实得这样...

2020-02-21 21:19:07 138

原创 剑指offer刷题记录——面试思路

二叉树的镜像题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/ 6 10/ \ / 5 7 9 11镜像二叉树8/ 10 6/ \ / 11 9 7 5实现思路这题要自己画棵树分析一下,其实更直观的题意就是,交换这棵树的每一个左子树和右子树,这样就简单多了。可以递归调用,也可以DFS或者BFS,总之交...

2020-02-21 20:18:00 132

原创 剑指offer刷题记录——递归和循环

斐波那契数列题目描述大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n<=39具体实现class Solution {public: int Fibonacci(int n) { if(n==0) return 0; if(n==1) re...

2020-02-20 21:26:23 108

原创 剑指offer刷题记录——发散思维能力

求1+2+3+…+n题目描述求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。实现思路需要迭代计算又不让用循环语句,自然想到递归调用了,但是题目又不让用if、case等判断语句,要如何终止递归呢?使用&&逻辑运算,如果前一个为0的话,后面的语句将不再被调用,毕竟结果肯定为0;具体实现...

2020-02-20 20:24:47 120

原创 剑指offer刷题记录——代码的完整性

数值的整数次方题目描述给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0实现思路归纳好条件,若base为0则返回0,若exponent为0则返回1;暴力求解,若exponent>0累乘即可;若exponent<0,最后求倒数即可。but,这种做法小学生都会,其实这道题的作业...

2020-02-19 22:51:11 77

原创 剑指offer刷题记录——综合

把字符串转换成整数题目描述将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0输入描述:输入一个字符串,包括数字字母符号,可以为空输出描述:如果是合法的数值表达则返回该数字,否则返回0实现思路做这个题目做的真的很烦,最麻烦的就是判断当前是否越界。可存储的最大的正数末位为7,可存储的最小的负数末位为8,因此每向下遍历一次对当前...

2020-02-18 21:50:14 149

原创 剑指offer刷题记录——树

把二叉树打印成多行题目描述从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。实现思路BFS即可,树的题目切记刚开始要判断顶点是否为空。具体实现/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...

2020-02-17 16:04:04 120

原创 剑指offer刷题记录——位运算

二进制中1的个数题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。实现思路由于数字在计算机中存储的形式就是二进制,因此可以直接将数字与1相与来判断二进制形式下最低位是否为1,然后右移数字继续判断直到数字为0即可。但是还要考虑负数形式,由于负数在存储时,最高位有一符号位,在右移过程中最高位会不断补1,所以会进入死循环。因此我们可以将任何负数与7FFFFFFF相与,这样...

2020-02-16 21:53:59 93

原创 剑指offer刷题记录——查找和排序

旋转数组的最小数字题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。实现思路我真的太菜了,看了好一会不知道到底想干嘛,直接遍历了数组找最小值,通过了?...

2020-02-16 21:31:49 80

原创 剑指offer刷题记录——栈和队列

用两个栈实现队列题目描述用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。实现思路比较基础,知道队列为先进先出,栈为先进后出即可。用一个栈存储队列元素,另一个栈辅助实现队列的出队操作。具体实现...

2020-02-15 22:29:08 90

原创 剑指offer刷题记录——链表

从尾到头打印链表题目表述输入一个链表,按链表从尾到头的顺序返回一个ArrayList。实现思路比较直的就是先按顺序存储在容器中,再申明另一个容器倒序赋值,更好的办法就是用reverse函数,或者遍历容器用swap即可。具体代码/*** struct ListNode {* int val;* struct ListNode *next;* ...

2020-02-15 20:23:38 105

原创 剑指offer刷题记录——字符串

替换空格题目描述请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。实现思路刚开始想着是遍历数组然后遇到空格就替换,但是这样子的话会带来很大的麻烦,因为每遇到一次空格,空格后面的数组元素全都要重新修改一遍。如果从后遍历的话,每个元素前的既定空格是固定的,因此可以计算出该元素变换后的索...

2020-02-13 20:55:42 97

原创 剑指offer刷题记录——数组

二维数组中的查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。实现思路由于该二维数组从上到下,从左到右都是递增有序的,刚开始我就打算用二分查找来从矩阵中心元素查找,显然这样是有问题的,对矩阵的分析太想当然了,在向下换行后并不一定是更大数。...

2020-02-13 14:12:55 120

空空如也

空空如也

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

TA关注的人

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