首页
学习
活动
专区
工具
TVP
发布

学院君的专栏

专栏作者
310
文章
686496
阅读量
51
订阅数
Go 常见算法面试题篇(三):高效调整数组数值顺序
今天来看一个考察程序员基本功的数组面试题,看起来仍然很简单,不过通过这个题目的不同解法,可以快速检验你是初级程序员还是资深程序员,一起来看下吧:
学院君
2023-03-03
3300
Go 常见算法面试题篇(二):在 O(1) 时间内删除单链表结点
我们知道,单向链表删除一个结点,通常的做法是从链表的头结点开始,顺序查找所有结点,直到找到要删除的结点并删除,因此,长度为 n 的链表删除结点的整体时间复杂度是 O(n),但是题目要求时间复杂度为 O(1),该怎么实现呢?在继续往下看之前,你不妨先想一想,看看有没有思路。
学院君
2023-03-03
3670
Go 常见算法面试题篇(一):反转单链表
上周周末有人和我交流反转单链表的实现代码,正好我也要写常见算法面试题系列,就着这个机会开始这个系列,和数据结构和算法系列并行,以便学以致用。
学院君
2023-03-03
3290
Go 数据结构和算法篇(十八):平衡二叉树
上篇教程学院君给大家介绍了二叉排序树,并且提到理想情况下,二叉排序树的插入、删除、查找时间复杂度都是 O(logn),非常高效,而且它是一种动态的数据结构,插入删除性能和查找一样好,不像之前提到的二分查找,虽然查找性能也是 O(logn),但是需要先对线性表进行排序,而排序的最好时间复杂度也是 O(nlogn),所以二分查找不适合动态结构的排序。
学院君
2023-03-03
3630
Go 数据结构和算法篇(十七):二叉排序树
前面已经介绍了二叉树的存储和遍历,今天这篇教程我们以二叉排序树为例,来演示如何对二叉树的节点进行「增删改查」。开始之前,我们先来介绍什么是二叉排序树,以及为什么要引入这种二叉树。
学院君
2023-03-03
3220
Go 数据结构和算法篇(十六):二叉树的遍历
二叉树的遍历指的是从根节点出发,按照某种次序依次访问二叉树中的所有节点,使得每个节点被访问一次且仅被访问一次。
学院君
2023-03-03
3300
Go 数据结构和算法篇(十五):二叉树的定义和存储
树这种数据结构模拟了自然界中树的概念,自然界中的树有根、叶子、枝干,数据结构中的树也是如此,只不过是倒过来的:
学院君
2023-03-03
3080
Go 数据结构和算法篇(十四):哈希表、哈希函数、哈希冲突和哈希算法
哈希表(HashTable,也叫散列表),是根据键名(Key)直接访问对应内存存储位置的数据结构。
学院君
2023-03-03
8350
Go 数据结构和算法篇(十三):字符串匹配之 Trie 树
Trie 树,也叫「前缀树」或「字典树」,顾名思义,它是一个树形结构,专门用于处理字符串匹配,用来解决在一组字符串集合中快速查找某个字符串的问题。
学院君
2023-03-03
1K0
Go 数据结构和算法篇(十二):字符串匹配之 KMP 算法
KMP 算法可以说是字符串匹配算法中最知名的算法了,KMP 算法是根据三位作者(D.E.Knuth,J.H.Morris 和 V.R.Pratt)的名字来命名的,算法的全称是 Knuth Morris Pratt 算法,简称为 KMP 算法。
学院君
2023-03-03
5140
Go 数据结构和算法篇(十一):字符串匹配之 BF 算法
首先从最简单的字符串匹配算法 —— BF 算法说起,BF 是 Brute Force 的缩写,中文译作暴力匹配算法,也叫朴素匹配算法。
学院君
2023-03-03
4170
Go 数据结构和算法篇(九):二分查找
介绍完基本的线性表排序算法后,今天我们来介绍一种常见的线性表查找算法 —— 二分查找。
学院君
2023-03-03
5230
Go 数据结构和算法篇(八):快速排序
归并排序算法虽好,但是不是原地排序算法,需要消耗额外的内存空间,今天我们要介绍的是常规排序里综合排名最高的排序算法:快速排序,江湖人称「快排」。
学院君
2023-03-03
2350
Go 数据结构和算法篇(七):归并排序
所谓归并排序,指的是如果要排序一个数据序列,我们可以先把该序列从中间分成前后两部分,然后对这两部分分别做排序操作,再将排好序的两部分合并在一起,这样整个数据序列就都有序了。
学院君
2023-03-03
2430
Go 数据结构和算法篇(六):选择排序
选择排序算法的实现思路有点类似插入排序,也分已排序区间和未排序区间。但是选择排序每次会从未排序区间中找到最小的元素,将其放到已排序区间的末尾。这样一来,当遍历完未排序区间,就意味着已经完成整个序列的排序了。图示如下:
学院君
2023-03-03
2170
Go 数据结构和算法篇(五):插入排序
插入排序的原理是:我们将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想是取未排序区间中的元素,在已排序区间中找到合适的插入位置将其插入,并保证已排序区间数据一直有序。重复这个过程,直到未排序区间中元素为空,算法结束。
学院君
2023-03-03
2040
Go 数据结构和算法篇(四):冒泡排序
今天学院君要给大家介绍的是基于选择的排序算法,常见基于选择的排序算法有冒泡排序、插入排序、选择排序、归并排序和快速排序,我们在选择排序算法的时候,通常会根据以下几个维度来考虑:
学院君
2023-03-03
1930
Go 数据结构和算法篇(三):队列
和栈一样,队列也是一种特殊的线性表结构,只不过队列是在一端插入,另一端删除,就跟我们平常排队一样的道理,从队尾入队,在队头出去,所以队列的特性是先入先出(FIFO),允许插入的一端叫队尾,允许删除的一端叫队头。
学院君
2023-03-03
2140
Go 数据结构和算法篇(二):栈
从逻辑角度来说,数组和链表都是线性结构(就是排成一条线的结构,只有前后两个方向,非线性结构包括树、图等,后面会讲到),从存储角度来说,一个是顺序存储,一个是链式存储,各有利弊。
学院君
2023-03-03
2340
Go 数据结构和算法篇(一):链表
链表是一种数据结构,和数组不同,链表并不需要一块连续的内存空间,它通过「指针」将一组零散的内存块串联起来使用,如图所示:
学院君
2023-03-03
3120
点击加载更多
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档