![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
一起来玩鸭
这个作者很懒,什么都没留下…
展开
-
2021-03-01
排序1.快排原理:2.堆排序3.滑动窗口4.双指针(1)对撞指针(2)快慢指针原创 2021-03-01 16:43:13 · 105 阅读 · 0 评论 -
leetcode-169、229
169.多数元素https://leetcode-cn.com/problems/majority-element-ii/solution/liang-fu-dong-hua-yan-shi-mo-er-tou-piao-fa-zui-zh/摩根投票法摩根投票法思路根据上述的算法思想,我们遍历投票数组,将当前票数最多的候选人与其获得的(抵消后)票数分别存储在 major 与 count 中。当我们遍历下一个选票时,判断当前 count 是否为零:若 count == 0,代表当前 major原创 2020-08-30 15:47:10 · 475 阅读 · 0 评论 -
数据结构与算法——排序
排序冒泡排序比较相邻两个元素,大的往后放,第一次冒泡把最大的找出来放到组后,第二次冒泡把第二大的数放在最后,以此类推,图如下:选择排序感觉和冒泡是反着来的,找最小的放在第一位,以此类推,不对,和冒泡原理还是不一样,它是一直把第一个和后面的进行比较,而冒泡是两两比较...原创 2020-08-28 23:10:28 · 87 阅读 · 0 评论 -
阿里巴巴2017秋招研发工程师笔试题笔记
(单选题) 有个特殊的餐厅,对客人的要求是如果要离开餐厅一定要看下餐厅内有没有比你迟进来的人,一定要所有比你迟进来的人离开后你才能离开,有一天甲,乙,丙,丁四个客人先后进入了这家餐厅,那么他们离开的顺序不可能是:A、丙、乙、甲、丁B、甲、乙、丙、丁C、乙、甲、丙、丁D、乙、丙、甲、丁E、丁、丙、甲、乙F、丁、丙、乙、甲先进入餐厅的人可能在后面的人进来之前已经出去参考:https://blog.csdn.net/weixin_43538934/article/details/8853475转载 2020-08-14 21:14:09 · 273 阅读 · 0 评论 -
递归
递归(1)终结条件(2)进行处理(3)调用函数(4)清理当前层原创 2020-08-09 23:34:43 · 81 阅读 · 0 评论 -
树、二叉树、二叉搜索树
树二叉树二叉搜索树空树也是二叉搜索时原创 2020-08-09 23:00:34 · 76 阅读 · 0 评论 -
数组、链表、跳表
数组、链表、跳表数组的插入、访问等操作的时间复杂度都是O(1)链表的时间复杂度如下表所示:除了查找是O(n),其他都是O(1)然后是跳表,为了处理链表中,查找时间复杂度为O(n),所以出现了跳表...原创 2020-08-09 22:28:07 · 104 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度第二个是嵌套的循环第一个时间复杂度是O(N)第二个时间复杂度是O(1)面试四件套(1)和面试官确认题目是什么意思(2)像有多少种解决办法,并且同时分析程序的时间复杂度和空间复杂度(3)找到最优的解法(4)测试结果斐波那契额数列时间复杂度怎么计算,这个是一个递归问题,递归就是要不断地调用函数,一直重复进入函数,可以画一个树状图来表示:可以看出节点数是按照指数级增长的,所以写代码的时候一定不可以直接写递归,要用一个内存把数据缓存下来简单的思考:二叉树的遍历每个原创 2020-08-09 20:41:55 · 95 阅读 · 0 评论 -
数据结构与算法——Leetcode11
11. 盛最多水的容器给你 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/container-with-most-water图中垂直线代表输入数组 [1,8,原创 2020-08-09 12:05:12 · 119 阅读 · 0 评论 -
数据结构与算法——Leetcode
Leetcode26. 删除排序数组中的重复项给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2,原创 2020-08-06 11:29:31 · 190 阅读 · 0 评论 -
Leetcode——分治
分治引文MapReduce(分治算法的应用) 是 Google 大数据处理的三驾马车之一,另外两个是 GFS 和 Bigtable。它在倒排索引、PageRank 计算、网页分析等搜索引擎相关的技术中都有大量的应用。尽管开发一个 MapReduce 看起来很高深,感觉遥不可及。实际上,万变不离其宗,它的本质就是分治算法思想,分治算法。如何理解分治算法?为什么说 MapRedue 的本质就是分治算法呢?主要思想分治算法的主要思想是将原问题递归地分成若干个子问题,直到子问题满足边界条件,停止递归。将子原创 2020-08-03 12:23:38 · 293 阅读 · 0 评论 -
数据结构与算法-字符串
字符串我们古人没有电影电视,没有游戏网络,所以文人们就会想出一些文字游戏来娱乐。比如宋代的李禺写了这样一首诗:“枯眼望遥山隔水,往来曾见几心知?壶空怕酌一杯酒,笔下难成和韵诗。途路阻人离别久,讯音无雁寄回迟。孤灯守夜长寥寂,夫忆妻兮父忆儿。”显然这是老公想念老婆和儿子的诗句。曾经和妻儿在一起,享受天伦之乐,现在一个人长久没有回家,也不见书信返回,望着油灯想念亲人,能不伤感吗?可仔细一读发现,这首诗竟然可以倒过来读:“儿忆父兮妻忆夫,寂寥长夜守灯孤。迟回寄雁无音讯,久别离人阻路途。诗韵和成难下笔,酒杯一酌原创 2020-07-28 22:47:33 · 283 阅读 · 0 评论 -
数据结构与算法-队列
这里写自定义目录标题队列1. 队列的定义与操作1.1 队列的定义1.2 队列的操作2. 队列的存储与实现2.1 顺序存储2.2 链式存储(链队)3. 练习参考答案队列队列也是我们经常使用的一种数据结构,如下图所示,购物结账,去食堂打饭等都需要排队,而结账或打饭的顺序与我们排队的顺序是相同的,即谁先排队就为谁先服务。比如我们发送邮件、打印资料,这些都是队列的具体应用。我们把需要发送的邮件先放到发送队列中,然后按照放入的顺序进行发送,把需要打印的文件先放到打印队列中, 然后按照放入的顺序进行打印。下面我原创 2020-07-28 22:43:01 · 259 阅读 · 0 评论 -
数据结构与算法——栈与递归
栈与递归栈是我们经常使用的一种数据结构,如下图所示,手枪发射子弹的顺序与子弹压入弹夹的顺序是相反,即后压入弹夹的子弹先发射出来。比如我们使用的Word、Excel、Photoshop等软件系统中的撤销操作,也是栈的具体应用,最后做的操作,一定是最先撤销的。下面我们就来详细介绍“栈”这种数据结构。栈的定义与操作1.1 栈的定义插入(入栈)和删除(出栈)操作只能在一端(栈顶)进行的线性表。即先进后出(First In Last Out)的线性表。例1 :线性表(a0,a1,…,an) 进栈与出栈演原创 2020-07-24 22:28:48 · 872 阅读 · 0 评论 -
数据结构与算法——顺序表和链表
顺序表和链表顺序表和链表1线性表的定义与操作1.1线性表的定义线性表(Linear List)是由n(n >= 0)个相同类型的数据元素a1,a2,…,an 组成的有序序列。即表中除首尾元素外,其它元素有且仅有一个直接前驱和直接后继。首元素仅有一个直接后继,尾元素仅有一个直接前驱。表中数据元素的个数称为表的长度,记为:(a1,a2,…,an)。1.2线性表的操作随机存取:获取或设置指定索引处的数据元素值。(支持索引器)插入操作:将数据元素值插入到指定索引处。移除操作:移除线性表指定索引原创 2020-07-23 23:17:27 · 198 阅读 · 0 评论 -
数据结构与算法——数组
数组数组是具有一定顺序关系的若干对象组成的集合,组成数组的对象称为数组元素。例如:向量对应一维数组矩阵对应二维数组数组名表示群体的共性,即具有同一种数据类型;下标表示个体的个性,即各自占有独立的单元。数组的存储2.1 n维数组的定义下标由n个数组成的数组称为n维数组。例如:int[] a = new int[10]; //一维数组(线)int[ , ] a = new int[2,3];//二维数组 (面)int[ , , ] a = new int[2,3,4];//三维数组 (体原创 2020-07-22 21:51:17 · 320 阅读 · 0 评论