自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Machen.

战斗不息,

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

原创 【0012】带最小值操作的栈(高频易考题)

问题描述 实现一个栈, 支持以下操作: push(val) 将 val 压入栈 pop() 将栈顶元素弹出, 并返回这个弹出的元素 min() 返回栈中元素的最小值 重点 要求 O(1) 开销. 保证栈中没有数字时不会调用 min() 在仅允许使用一个栈的情况下,如何实现如题的功能? 主要考点 对stack栈对象及其方法push,pop,peek,min的灵活使用。 算法逻辑 push及...

2019-09-11 10:17:49 278

原创 【0011】二叉查找树中搜索区间问题

问题描述 给定一个二叉查找树和范围[k1, k2]。按照升序返回给定范围内的节点值。 重点 二叉树数据的序列化及数据排序 主要考点 二叉树的查找范围的间值匹配 算法逻辑 判断及确认当前获取的节点是否为空 取得二叉树当前节点的值并在数据范围内进行匹配 将符合范围区间的值存入集合 若当前节点取值小于最小范围,则向左子树递归,反之则向右子树递归 实现代码 List<Integer> ...

2019-09-10 17:39:07 360

原创 【0010】 字符串的不同排列问题(重复排列问题)

问题描述 给出一个字符串,找到它的所有排列,注意同一个字符串不要打印两次。 示例如: 输入:“abb” 输出:[“abb”, “bab”, “bba”] 问题重点 关键点是重复元素的去重排列问题 主要考点 排列算法 去重逻辑 算法逻辑 获取并对字符串进行拆分及排序重组相关预处理 对字符串数组进行排列并重复此步骤进行筛选 设定置换元素index(默认为**-1**,代表不进行元素置换) 从数...

2019-09-10 14:52:56 920

原创 【0009】FizzBuzz问题

问题描述 给定一个整数n. 从 1 到 n 按照下面的规则打印每个数: 如果这个数被3整除,打印fizz. 如果这个数被5整除,打印buzz. 如果这个数能同时被3和5整除,打印fizz buzz. 如果这个数既不能被 3 整除也不能被 5 整除,打印数字本身。 重点 在至多允许使用一个if判断时,如何达成题目要求? 主要考点 如何不用或用一个IF来实现题目需求。 算法逻辑 使用多目运算符 ...

2019-09-05 14:13:59 251

原创 【0008】旋转字符串问题

问题描述 给定一个字符串(以字符数组的形式给出)和一个偏移量,根据偏移量原地旋转字符串(从左向右旋转)。 重点 如何对字符串数组进行原地旋转。 输入: str="abcdefg", offset = 3 输出: str = "efgabcd" 样例解释: 注意是原地旋转,即str旋转后为"efgabcd" 主要考点 如何寻找旋转中心点? 如何对字符数组进行重新编排? 在偏移量大于字符数...

2019-09-05 13:49:45 236

原创 【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 156

原创 【0006】合并排序数组

问题描述: 合并两个有序升序的整数数组A和B变成一个新的数组。 数组A和B的长度不一致。 合并后的新数组也要有序。 重点: 数组A与B的合并 合并后的数组如何进行最优排序 主要考点: 合并数组的方式与方法 数组排序的方式与方法 算法逻辑: 使用冒泡排序及快排排序都可以完美实现需求,但这并不是我们想要的最优解 两个数组长度并不一致,由此我们可以考虑先混装再排序的方式 代码实现(最简代...

2019-09-04 15:12:45 217

原创 【0005】第K大元素问题

问题描述: 在时间复杂度为 O(nlogn) 或者 O(n)的情况下实现找出一个数组中第K大的元素值 重点: 在满足上述时间复杂度的同时给出最优解 主要考点: 使用数组快排算法给出最优解 使用最简代码给出最优解 算法逻辑: 最简代码实现使用了JDK1.8+提供的原生方法,故不再多做阐述。 快速排序算法: 3. 快排算法本质上是对冒泡排序算法的一种优化及改良 4. 设置两个变量i、j,排序开始的...

2019-09-04 14:45:57 249

原创 【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 980

原创 【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 665

原创 【0002】阶乘尾0问题

问题描述: 计算任意一个数字的阶乘(如32!)值,并获取其尾部数字0的数量。 重点: 阶乘公式的应用 主要考点: 阶乘结果其尾部0的产生原因 算法公式: 基本阶乘公式:N! = (N-1)! × N 示例推导: 4! = 4 × 3 × 2 × 1 = 24 5! = 5 × 4 × 3 × 2 × 1 = 120 10! = 10 × 9 × 8 × 7 × 6 × 5 × 4 × 3 × 2 ...

2019-09-04 11:16:49 693

原创 【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 239

空空如也

空空如也

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

TA关注的人

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