- 博客(12)
- 收藏
- 关注
原创 【0012】带最小值操作的栈(高频易考题)
问题描述实现一个栈, 支持以下操作:push(val) 将 val 压入栈pop() 将栈顶元素弹出, 并返回这个弹出的元素min() 返回栈中元素的最小值重点要求 O(1) 开销.保证栈中没有数字时不会调用 min()在仅允许使用一个栈的情况下,如何实现如题的功能?主要考点对stack栈对象及其方法push,pop,peek,min的灵活使用。算法逻辑push及...
2019-09-11 10:17:49
234
原创 【0011】二叉查找树中搜索区间问题
问题描述给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。重点二叉树数据的序列化及数据排序主要考点二叉树的查找范围的间值匹配算法逻辑判断及确认当前获取的节点是否为空取得二叉树当前节点的值并在数据范围内进行匹配将符合范围区间的值存入集合若当前节点取值小于最小范围,则向左子树递归,反之则向右子树递归实现代码 List<Integer> ...
2019-09-10 17:39:07
288
原创 【0010】 字符串的不同排列问题(重复排列问题)
问题描述给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次。示例如:输入:“abb”输出:[“abb”, “bab”, “bba”]问题重点关键点是重复元素的去重排列问题主要考点排列算法去重逻辑算法逻辑获取并对字符串进行拆分及排序重组相关预处理对字符串数组进行排列并重复此步骤进行筛选设定置换元素index(默认为**-1**,代表不进行元素置换)从数...
2019-09-10 14:52:56
832
原创 【0009】FizzBuzz问题
问题描述给定一个整数n. 从 1 到 n 按照下面的规则打印每个数:如果这个数被3整除,打印fizz.如果这个数被5整除,打印buzz.如果这个数能同时被3和5整除,打印fizz buzz.如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。重点在至多允许使用一个if判断时,如何达成题目要求?主要考点如何不用或用一个IF来实现题目需求。算法逻辑使用多目运算符...
2019-09-05 14:13:59
201
原创 【0008】旋转字符串问题
问题描述给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。重点如何对字符串数组进行原地旋转。输入: str="abcdefg", offset = 3输出: str = "efgabcd" 样例解释: 注意是原地旋转,即str旋转后为"efgabcd"主要考点如何寻找旋转中心点?如何对字符数组进行重新编排?在偏移量大于字符数...
2019-09-05 13:49:45
183
原创 【0007】二叉树的序列化和反序列化问题
问题描述:如何编写一个算法以实现二叉树的序列化和反序列化?将树写入一个文件被称为“序列化”。读取文件后重建同样的二叉树被称为“反序列化”。重点:在执行序列化及反序列化时,Node节点为空需要转化输出为#输入:{3,9,20,#,#,15,7}输出:{3,9,20,#,#,15,7}解释:二叉树 {3,9,20,#,#,15,7},表示如下的树结构: 3 / \ 9...
2019-09-05 10:19:05
109
原创 【0006】合并排序数组
问题描述:合并两个有序升序的整数数组A和B变成一个新的数组。数组A和B的长度不一致。合并后的新数组也要有序。重点:数组A与B的合并合并后的数组如何进行最优排序主要考点:合并数组的方式与方法数组排序的方式与方法算法逻辑:使用冒泡排序及快排排序都可以完美实现需求,但这并不是我们想要的最优解两个数组长度并不一致,由此我们可以考虑先混装再排序的方式代码实现(最简代...
2019-09-04 15:12:45
183
原创 【0005】第K大元素问题
问题描述:在时间复杂度为 O(nlogn) 或者 O(n)的情况下实现找出一个数组中第K大的元素值重点:在满足上述时间复杂度的同时给出最优解主要考点:使用数组快排算法给出最优解使用最简代码给出最优解算法逻辑:最简代码实现使用了JDK1.8+提供的原生方法,故不再多做阐述。快速排序算法:3. 快排算法本质上是对冒泡排序算法的一种优化及改良4. 设置两个变量i、j,排序开始的...
2019-09-04 14:45:57
203
原创 【0004】找出只含素因子2,3,5 的第 n 小的数(丑数算法)
问题描述:在时间复杂度为 O(nlogn) 或者 O(n)的情况下实现找出只含素因子2,3,5 的第 n 小的数重点:丑数的逻辑主要考点:如何判断数字是否为丑数算法逻辑:丑数的概念:只含有素因子2,3,5的数字被称之为丑数,且习惯上我们把1当作第一个丑数满足时间复杂度O(n),意味我们要获取的丑数是一个有限集合,即获取第n小等同于数组集合上限为n根据丑数规则可知,第一个丑数值为...
2019-09-04 14:33:45
918
原创 【0003】计算0至一个数字n之间指定数字k(1~9)的出现次数(含重复)
问题描述:计算0至一个数字n之间指定数字k(1~9)的出现次数(含重复)。重点:求数字n由高位至低位每位重(个十百……)数字k值的出现次数主要考点:如何通过非暴力手段(fori逐数字匹配的方式)获取最终答案算法逻辑:数字高低位补差值,需要注意叠加的情况算法代码:public static int digitCounts(int k, int n) { int...
2019-09-04 14:07:37
581
原创 【0002】阶乘尾0问题
问题描述:计算任意一个数字的阶乘(如32!)值,并获取其尾部数字0的数量。重点:阶乘公式的应用主要考点:阶乘结果其尾部0的产生原因算法公式:基本阶乘公式:N! = (N-1)! × N示例推导:4! = 4 × 3 × 2 × 1 = 245! = 5 × 4 × 3 × 2 × 1 = 12010! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 ...
2019-09-04 11:16:49
539
原创 【0001】通过使用位运算符实现A+B典型问题
问题描述:在不使用运算符的情况下,实现简单的A+B问题。重点:不使用常规运算符 【±×/】计算A+B的值主要考点:相关二进制位运算相关位运算符的使用进位计算的基础知识点算法分析:a+b = (a ^ b) + ( (a & b ) << 1 )设sum = a ^ b;carryBit =(a & b ) << 1则可以得到...
2019-09-04 11:12:56
185
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人