面试题
文章平均质量分 54
amychang230_
这个作者很懒,什么都没留下…
展开
-
算法之递归和循环比较
递归的缺点 首先递归实现效率不如循环。 递归由于是函数调用自身,而函数调用要消耗空间和时间,每一次调用都需要在内存栈中分配空间,来保存参数、返回地址及临时变量,并且往栈里压入数据和弹出数据都需要时间。递归中有很多计算是重复的,因此带来很大的负面影响。其本质是把一个问题分解成两个和多个小问题,如果多个小问题存在相互重叠部分,就造成重复计算。 动态规划用递归分析问题,但由于递归分解的子问题存在大...原创 2018-08-14 10:31:20 · 4286 阅读 · 1 评论 -
面试题之位运算
位运算共有5种:与、或、异或左移和右移。异或,就是两个操作数相同为0,相异为1.符号为”^”。 左移n位表示,最左边的n位被丢弃,同时在最右边补上n个0。符号m<...原创 2018-08-14 16:33:29 · 284 阅读 · 0 评论 -
查找算法之旋转数组的最小数字
(详见剑指offer面试题11)把一个数组最开始的几个元素搬到数组的末尾,称之为数组的旋转。遍历数组的时间复杂度为o(n),显然没有利用旋转数组的特性,不满足面试要求。 在排序数组中用二分查找的时间复杂度为O(logn)。旋转数组特性:其实际上可以划分为两个排序的子数组,前面的子数组元素都大于等于后边子数组的元素。同时最小的元素恰好是这俩数组的分界线。因此可以将二分查找引入旋转数组的查找。易...原创 2018-08-14 19:27:06 · 294 阅读 · 0 评论 -
查找和排序
查找包括顺序查找、二分查找、哈希表查找和二叉排序树查找。如果要求是在排序数组(或部分排序数组)中查找一个数字或者统计某个数字出现的次数,可以采用二分查找。 哈希表优点是时间复杂度为O(1),是效率最高的查找方式。缺点是需要额外的空间来实现哈希表。 排序比查找复杂,包括比较插入排序、冒泡排序、归并排序、、快速排序面试要求能够从额外空间消耗、平均时间复杂度和最差时间复杂度等方面比较他们的优缺点。快...原创 2018-08-14 20:14:25 · 200 阅读 · 0 评论 -
面试题之数组中重复的数字
题目1 在一个长度为n的数组里的所有数字都在0~n-1范围内。数组中某些数字是重复的,但不知有几个数字重复,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 思路 若采用先排序,则其时间复杂度O(nlogn) 若采用哈希表,时间复杂度O(n),空间复杂度为O(n)。 最佳思路 从头扫描数组,扫描到下标为i的数字时,首先比较这个数字(m)是不是等于i,若是,接着扫描下一个,若不...原创 2018-08-14 21:59:43 · 413 阅读 · 0 评论 -
算法之回溯法
回溯法回溯法非常适合由多个步骤组成的问题,并且每个步骤都有多个选项。当我们在某一步选择了其中一个选项时,就进入下一步,然后面临新选项,重复选择,直至最终状态。经典面试题1 矩阵中的路径(详见《剑指offer》面试题12) 易错点 1.由于路径不能重复进入矩阵的格子,因此还需定义和字符矩阵大小一样的布尔值矩阵,标识路径是否进入每个格子。 2.终止递归的标志:路径字符串上的所有字符都在...原创 2018-08-13 16:54:05 · 189 阅读 · 0 评论