
手撕面试题算法
Yuc0114
大四学生,Java后端不断学习中...
展开
-
手撕面试题算法<排序>(7)—— 箱排序 & 基数排序
前言之前说到的排序的时间复杂度都只受限于数组的长度,而不受限与数组元素的大小今天来讲讲一种以空间换时间的排序算法 —— 箱排序(Bin Sort),及其改良 —— 基数排序(Radix Sort)手撕算法 - 排序系列手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序手撕面试题算法<排序>(3)—— 插入排序及其优化实现手撕面试题算法<排序>(3.5)—— 希尔排序手撕面试题算法<排序>(4)—— 归并排序手撕面试题算法<排序>(5)—— 快速原创 2020-11-04 19:12:33 · 602 阅读 · 0 评论 -
手撕面试题算法<排序>(6)—— 堆 & 堆排序
前言堆也是一种数据结构,是用数组来表示的完全二叉树堆排序是利用堆这种数据结构来对数组进行排序的排序算法,其时间复杂度可以达到 O(n*logn)手撕算法 - 排序系列手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序手撕面试题算法<排序>(3)—— 插入排序及其优化实现手撕面试题算法<排序>(3.5)—— 希尔排序手撕面试题算法<排序>(4)—— 归并排序手撕面试题算法<排序>(5)—— 快速排序以及快排为什么快源码看完有收获别忘了点个st原创 2020-11-03 18:34:30 · 696 阅读 · 0 评论 -
手撕面试题算法<排序>(5)—— 快速排序 & 快排为什么快
前言快速排序应该是排序算法里最需要掌握的了,作为面试常客,面试官动不动就会让你讲讲快排的思想,以及写个快排…手撕算法 - 排序系列手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序手撕面试题算法<排序>(3)—— 插入排序及其优化实现手撕面试题算法<排序>(3.5)—— 希尔排序手撕面试题算法<排序>(4)—— 归并排序源码看完有收获别忘了点个star哦~导航前言手撕算法 - 排序系列源码快速排序思想时间复杂度最好情况和归并排序的区别最坏情况原创 2020-11-02 15:46:35 · 1017 阅读 · 0 评论 -
手撕面试题算法<排序>(4)—— 归并排序
前言归并排序是一个相当快速的算法,其时间复杂度稳定在O(n*logn),在面试中被问到的频率也挺高的,今天就来介绍一下这个排序算法手撕算法 - 排序系列手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序手撕面试题算法<排序>(3)—— 插入排序及其优化实现手撕面试题算法<排序>(3.5)—— 希尔排序源码看完有收获别忘了点个star哦~导航前言手撕算法 - 排序系列源码归并排序思想时间复杂度实现1. 核心 - 数组的拆分2. 核心 - 数组的归原创 2020-11-02 12:01:38 · 740 阅读 · 0 评论 -
手撕面试题算法<排序>(3.5)—— 希尔排序
前言之所以把希尔排序作为排序系列的第3.5篇,是因为希尔排序可以称得上是 插入排序Plus ,它在插入排序的基础上继续升级,突破了时间复杂度O(n2)的壁障手撕算法 - 排序系列手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序手撕面试题算法<排序>(3)—— 插入排序及其优化实现源码看完有收获别忘了点个star哦~导航前言手撕算法 - 排序系列源码希尔排序思想例时间复杂度实现测试希尔排序思想希尔排序中,有一个叫做增量的概念,在排序过程原创 2020-10-30 17:44:06 · 405 阅读 · 0 评论 -
手撕面试题算法<排序>(3)—— 插入排序及其优化实现
前言插入排序就像我们玩扑克的时候整理手牌一样,我们会在手上已经整理好的牌里找到合适的位置,将拿到的牌插入到那个合适的位置原创 2020-10-30 10:13:31 · 389 阅读 · 0 评论 -
手撕面试题算法<排序>(2)—— 选择排序
前言选择排序也是一个通过暴力遍历数组的O(n2)简单排序算法,了解一下就行了~手撕算法 - 排序系列手撕面试题算法<排序>(1) —— 冒泡排序及其优化实现手撕面试题算法<排序>(2)—— 选择排序导航前言手撕算法 - 排序系列选择排序的思想实现测试选择排序的思想简单地说,选择排序的过程就是一次次地从一个无序数组中拿出它当前最小的元素,如,对数组[5,4,3,1,2]进行排序,过程如下:排序次数有序数组无序数组传入数组初始[][5,4,3,1,2][5,4,3,原创 2020-10-29 18:05:22 · 420 阅读 · 0 评论 -
手撕面试题算法<排序>(1)—— 冒泡排序及其优化实现
前言排序算法基本上是面试必问的问题,每个程序员都需要熟悉排序算法,非常重要。作为本坑的第一篇,当然是先讲讲排序算法中最基础的冒泡排序啦~排序系列坑的排序都是升序排序(知道了升序怎么写,自然也就知道降序怎么写啦)导航前言冒泡排序的思想时间复杂度实现数组元素交换方法最粗暴的排序实现冒泡排序的优化:Step 1冒泡排序的优化:Step 2对比冒泡排序的思想即遍历整个数组,两个两个的比对相邻元素,如果前一个数大于后一个数,则将这两个数进行交换,如图:时间复杂度遍历一次数组的时间复杂度为O(n),而要原创 2020-10-29 14:25:39 · 908 阅读 · 0 评论 -
手撕面试题算法<链表> (1)——链表合并系列
前言本篇会记录所有关于我对合并链表系列题目的题解,不定期更新开始合并链表系列,应该从LeetCode 21. 合并两个有序链表开始说起:这道题需要掌握链表的基础遍历,通常,我们使用while循环遍历:while(l1!=null){ // 输出链表节点值 System.out.println(l1.val); l1 = l1.next;}要合并两个有序,长短不一的链表,我们可以先用while循环统一遍历,直到一条链表被遍历完:class Solution { public原创 2020-10-16 22:06:41 · 328 阅读 · 0 评论 -
手撕面试题算法<树> (1) —— 树的层序遍历以及相关题解
前言刚开始写算法题时,看到树的题就要烦死了,现在比以前好了点,但也总是忘记思路(毕竟日常真的很少用到这些),开一个坑记录一下树相关的题解吧~导航前言树的层序遍历题解剑指 Offer 32 - II. 从上到下打印二叉树 IILeetCode 107. 二叉树的层次遍历 II剑指 Offer 32 - III. 从上到下之字形打印二叉树 III树的层序遍历从最基本的二叉树开始,树的层序遍历通常来说就是按照树的层数,从上往下的将每一层,按每一层从左到右的顺序遍历出来:剑指 Offer 32 - I.原创 2020-10-11 21:15:57 · 874 阅读 · 3 评论 -
经典面试题算法题——反转单链表 解析
导航前言源码迭代法要点递归法要点递操作归操作总结前言反转链表是一道很经典的面试题,出现频率也较高,本文讲讲迭代法和递归法的解题思路源码点击这里获取源码,别忘了点个Star哦~迭代法 /** * 传入一个单链表的头节点,将该链表反转 * 迭代法 * * @param head */ public static ListNode iterative(ListNode head) { // 定义当前节点为入参节点原创 2020-09-13 16:15:22 · 332 阅读 · 0 评论 -
多重双向链表实现LFU算法
导航前言源码一、思路二、核心定义1. 类的层次2. 链表节点类3. 多重链表类1)类的字段2)构造方法3)方法实现a. 添加数据方法putb. 删除指定key的节点方法*c. toString方法4. LFU实现类1)类的字段2)构造方法3)私有方法a. “链链表”的尾删b. “链链表”的头插c. 基于频次找到对应链表d. 对内展示缓存中的元素总数e. 数据频次自增4)实例方法a. 新增数据的put方法b. 获取数据值的get方法c. 显示缓存数据个数方法*d. toString方法总结前言昨天在 le原创 2020-09-10 22:47:34 · 908 阅读 · 2 评论 -
面试官:不用集合框架给我写一个LRU
这里写目录标题前言源码一、如何设计?二、核心定义1. 类设计2. 内部类三、方法实现1. 头插方法addToHead2. 尾删方法removeLast3. 通过key寻找节点4. 将节点移动到链头5. 添加键值对的put方法6. 查询数据方法get7. 其它containsisEmptytoString四、总结前言上次我们介绍了LRU的思想,并借助Java集合框架中的LinkedList和HashMap非常简单的实现了一个LRU:手撕面试题算法(1)——LRU算法但是,在面试中要是借助集合框架写LRU原创 2020-09-08 21:28:02 · 297 阅读 · 0 评论 -
手撕面试题算法(1)——LRU算法
目录前言一、设计思想二、实现后的效果三、实现步骤1. 类定义2. 方法定义1)置入数据操作put方法2)获取数据的get方法3)打印缓存中key的方法4)返回缓存中的数据个数四、总结前言LRU(Least Recently Used),即最近最少使用之意,是一种缓存淘汰策略,当需要淘汰一个数据时(如缓存空间已满),其将一个未使用时间最长的数据淘汰(删除)本文只介绍最常用的LRU手写实现方法,即HashMap+链表的实现方法一、设计思想利用链表存储被存入容器的key,每当有一个数据被放入容器,则原创 2020-09-06 20:02:38 · 701 阅读 · 0 评论