编程语言
no_tang
越学越丧
展开
-
【C++算法笔记】——二分查找算法
二分查找也称折半查找(Binary Search)1、目的:给定一个数组和一个目标值,返回该目标值在数组中第一次出现位置的下标。2、限制:(1)该数组必须满足顺序存储结构。(2)必须按关键字大小有序排列。3、原理:每次取数组正中间的值与目标值比较,若相等则返回该中间值的下标,若目标值大于中间的值则取中间值的后半部分作为一个新的数组(保留原下标)重复第一步的操作,若目标值小于中间的值则取该中间值的前...原创 2018-04-03 21:29:23 · 672 阅读 · 0 评论 -
[数据结构与算法]二叉树的前、中、后序非递归遍历以及层次遍历
前言:二叉树作为常见的数据结构,其重要性不言而喻。相信前、中、后序的递归遍历大家都已经非常熟悉,但很多场景是需要用到非递归的遍历(例如leetcode上的题目)。前序遍历和中序遍历差不多,后序遍历稍微难一点,用点时间研究一下相信也能熟悉掌握。(整个流程建议结合画图会更好理解)前序遍历:我们将会用到数据结构里面的栈。1:我们先从根节点开始一边沿着左子树的方向把每个结点压进栈中一边把每个结点一...原创 2018-07-13 15:44:50 · 406 阅读 · 0 评论 -
[数据结构与算法]通俗易懂入门并查集
并查集,顾名思义,具有将两个或以上的集合合并和查找的作用。所以讨论这个数据结构即讨论两个函数,一个是查找函数find(),另一个是合并函数join()。为了便于理解,我们从题目入手: hdoj畅通工程leetcode朋友圈用leetcode的题目做例子,简单的说就是,假设1和2是朋友,2和3是朋友,4和5是朋友,那1,2,3可以组成一个朋友圈,4和5可以组成另一个朋友圈,所以一共有...原创 2018-09-13 15:31:34 · 564 阅读 · 0 评论 -
[数据结构与算法]排序算法——图解堆排序
堆排序:堆排序作为一种高效的排序算法,最好、最坏以及平均时间复杂度都为O(NlogN)。堆排序正如其名,是利用堆这种数据结构进行设计的一种排序算法,所以我们要先了解什么是堆。堆:分为大顶堆和小顶堆两种大顶堆:每个结点的值都比它的左右孩子结点的值大。小顶堆:每个结点的值都比它的左右孩子结点的值小。对堆有了简单的认识即可,实际上我们在进行堆排序的时候既可以建立大顶堆进行排序...原创 2018-09-21 00:38:47 · 422 阅读 · 0 评论 -
leetcode——探索字节跳动系列题目
今天登陆leetcode发现探索区多了字节跳动的专栏,特意用了一下午去刷,有些是之前刷过的。但题目不错,就当是复习一遍吧,这里记录一下我会的以及自己觉得不错的题目。原题链接请点击题目一:挑战字符串3. 无重复字符的最长子串分析:这题要求连续的不重复的最长子序列的长度,注意这里是需要连续,利用这个特性,我们可以维护一个窗口,窗口装的是无重复的字符串,一开始窗口的左边在起点(即下标为0...原创 2018-11-29 22:05:50 · 7487 阅读 · 2 评论