随笔分类 - 算法与数据结构
发表于 2022-02-16 17:03阅读:1799评论:0推荐:1
摘要:题目排序过程中,对尚未确定最终位置的所有元素进行一遍处理称为一“趟”。下列排序中,不可能是快速排序第二趟结果的是()【2019年全国试题10(2分)】 A. 5, 2, 16, 12, 28, 60, 32, 72B. 2, 16, 5, 28, 12, 60, 32, 72C. 2, 12, 16
阅读全文 »
发表于 2022-02-15 17:26阅读:371评论:0推荐:0
摘要:要点: 从这棵树的根结点开始,从上到下,看每一个结点,把你正在看的结点的孩子放在左子树,兄弟放在右子树。 口诀: 1. 将 节点的孩子 放在左子树; 2. 将 节点的兄弟 放在右子树。 关于这个问题,最好的办法就是记住一道例题了,因为语言不是很好描述,也不容易看懂描述。 例题: 或者有另一种理解方法
阅读全文 »
发表于 2021-11-08 17:06阅读:388评论:0推荐:1
摘要:主要实现如下功能 1.红黑树的前中后顺遍历 2.红黑树的创建 3.红黑树的销毁 4.查找"红黑树"中键值为key的节点(递归) 5.查找"红黑树"中键值为key的节点(非递归) 6.返回最小结点的值(将值保存到val中) 7.返回最大结点的值(将值保存到val中) 8.打印红黑树 9.将结点插入到红
阅读全文 »
发表于 2020-10-31 17:07阅读:197评论:0推荐:0
摘要:常用的有这两种数归,其他的数学归纳法暂不涉及,有兴趣可以拓展学习。还有一些反证法。在进行编程的时候,如果有可能存在未知的情况,可以用归纳法推演一下,尽量避免使用递归。如果你写过的代码并不多,递归带来的性能提升远不及造成的麻烦。甚至递归本身就很糟糕。 ①第一数学归纳法: 一般地,证明一个与自然数n有关
阅读全文 »
发表于 2020-07-26 23:09阅读:219评论:0推荐:0
摘要:给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1:输入: nums = [[9,9,4], [6,6,8], [2,1,1]] 输出: 4 解释: 最长递增路径为 [1, 2, 6,
阅读全文 »
发表于 2020-07-16 23:14阅读:265评论:0推荐:0
摘要:实现 int sqrt(int x) 函数。 计算并返回 x 的平方根,其中 x 是非负整数。 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去。 示例 1:输入: 4,输出: 2 示例 2:输入: 8,输出: 2(说明: 8 的平方根是 2.82842..., 由于返回类型是整数,小数部
阅读全文 »
发表于 2020-07-16 22:30阅读:303评论:0推荐:0
摘要:给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 说明: 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的
阅读全文 »
发表于 2020-07-14 21:55阅读:201评论:0推荐:0
摘要:给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。 注意:整数序列中的每一项将表示为一个字符串。 「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下: 1. 12. 113. 214. 12115. 111221 一.暴力拆解:双百 思路:
阅读全文 »
发表于 2020-07-13 23:59阅读:227评论:0推荐:0
摘要:给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 输入: [2,2,1] 输出: 1 示例 2: 输入: [4,1,2,1,2] 输出: 4 1.暴力法:排序后,
阅读全文 »
发表于 2020-01-01 20:31阅读:301评论:0推荐:0
摘要:#include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/wait.h> int main(int c, char **v) { while (--c > 1 && !fork()); sleep(c =
阅读全文 »
发表于 2019-10-09 18:58阅读:234评论:0推荐:0
摘要:There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity sh
阅读全文 »
发表于 2019-09-25 19:56阅读:385评论:0推荐:0
摘要:问题描述:输入是一个大小为n的整型数组,要求输出数组的任何连续子数组中的最大值。例如:输入的数组为array[10] = {31,-41,59,26,-53,58,97,-93,-23,84};输出最大连续子数组和为array[2...6]:187 算法1:对所有满足0<=i<=j<=n的(i,j)
阅读全文 »
发表于 2019-09-25 19:55阅读:229评论:0推荐:0
摘要:第十六章:贪心算法--活动选择问题 前言:贪心算法也是用来解决最优化问题,将一个问题分成子问题,在现在子问题最优解的时,选择当前看起来是最优的解,期望通过所做的局部最优选择来产生一个全局最优解。书中先从活动选择问题来引入贪心算法,分别采用动态规划方法和贪心算法进行分析。本篇笔记给出活动选择问题的详细
阅读全文 »
发表于 2019-09-25 19:53阅读:198评论:0推荐:0
摘要:第十五章:动态规划--装配线调度 前言:动态规划的概念 动态规划(dynamic programming)是通过组合子问题的解而解决整个问题的。分治算法是指将问题划分为一些独立的子问题,递归的求解各个问题,然后合并子问题的解而得到原问题的解。例如归并排序,快速排序都是采用分治算法思想。本书在第二章介
阅读全文 »
发表于 2019-09-25 19:48阅读:242评论:0推荐:0
摘要:第十二章:二叉查找树 摘要: 本章介绍了二叉查找树的概念及操作。主要内容包括二叉查找树的性质,如何在二叉查找树中查找最大值、最小值和给定的值,如何找出某一个元素的前驱和后继,如何在二叉查找树中进行插入和删除操作。在二叉查找树上执行这些基本操作的时间与树的高度成正比,一棵随机构造的二叉查找树的期望高度
阅读全文 »
发表于 2019-09-25 19:45阅读:439评论:0推荐:0
摘要:第十章:基本数据结构 摘要 本章介绍了几种基本的数据结构,包括栈、队列、链表以及有根树,讨论了使用指针的简单数据结构来表示动态集合。本章的内容对于学过数据结构的人来说,没有什么难处,简单的总结一下。 1、栈和队列 栈和队列都是动态集合,元素的出入是规定好的。栈规定元素是先进后出(FILO),队列规定
阅读全文 »
发表于 2019-09-25 19:43阅读:418评论:0推荐:0
摘要:第七章:快速排序 本章介绍了快速排序及其算法分析,快速排序采用的是分治算法思想,对包含n个数的输入数组,最坏情况下运行时间为θ(n^2),但是平均性能相当好,期望的运行时间为θ(nlgn)。另外快速排序能够就地排序(我理解是不需要引入额外的辅助空间,每次划分能确定一个元素的具体位置),在虚拟环境中能
阅读全文 »
发表于 2019-09-25 19:40阅读:345评论:0推荐:0
摘要:本章开始介绍了堆的基本概念,然后引入最大堆和最小堆的概念。全章采用最大堆来介绍堆的操作,两个重要的操作是调整最大堆和创建最大堆,接着着两个操作引进了堆排序,最后介绍了采用堆实现优先级队列。 1、堆 堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种
阅读全文 »
发表于 2019-09-25 19:27阅读:572评论:0推荐:0
摘要:第一章:算法在计算机中的作用 本章是本书的开篇,介绍了什么是算法,为什么要学习算法,算法在计算机中的地位及作用。 算法(algorithm)简单来说就是定义良好的计算机过程,它取一个或一组值作为输入,并产生出一个或一组值作为输出。即算法就是一系列的计算步骤,用来将输入数据转换成输出数据。 书中有一句
阅读全文 »
发表于 2019-09-19 13:50阅读:1908评论:0推荐:0
摘要:首先声明一下,本文只对十种排序算法做简单总结,并参照一些资料给出自己的代码实现,并没有对某种算法理论讲解,更详细的 了解可以参考以下资料: 1、《data structure and algorithm analysis in c 》 2、《大话数据结构》 3、http://blog.csdn.ne
阅读全文 »