自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

子居的博客

分布式存储、后台开发

  • 博客(11)
  • 收藏
  • 关注

原创 堆排序

堆结构堆是一种数据结构,它的结构和完全二叉树 一致,分为大顶堆和小顶堆。什么是大顶堆、小顶堆呢?以大顶堆为例,堆顶元素是整个堆内值最大的元素,小顶堆反之保存的是最小的元素。如下图所示:堆结构数据保存堆结构原本是一个完全二叉树的结构,但是这里我们是借用堆来实现对数组的排序,所以我们用数组来保存堆中的数据,比如用下面的数组来保存上面堆结构里的数据:除此之外我们还要知道在数组中如何对节点进行...

2020-03-25 18:39:30 143

原创 LeetCode 约瑟夫环(动态规划)

面试题62. 圆圈中最后剩下的数字题目描述法一:链表模拟(超时)直接模拟删除的过程,比如开始的时候是从0位置开始遍历,每隔m删除一个数,当我们在依次遍历m-1位置的同时,将它们依次移动到链表的末尾。当遍历到m位置的时候就不添加到链表末尾而是直接删除,重复此过程直到剩下最后一个数为止。 int lastRemaining(int n, int m) { list<in...

2020-03-25 18:37:33 4079 2

原创 LeetCode只出现一次的数字I~III(位运算)

136. 只出现一次的数字题目描述给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4解题思路位运算:从头到尾对每个数进行一遍^运算最后得到的那个数就是出现一...

2020-03-24 22:42:04 227

原创 queue && deque

一、queuequeue是一种先进先出的数据类型,有头部和尾部,头部负责数据的出队,尾部负责数据的入队。不支持遍历操作数据操作pop(): 从队列的头部弹出数据push(): 在队尾压入数据front(): 获取队头数据back(): 获取队尾数据size(): 返回队列里面元素个数empty(): 判断元素是否为空#include <iostream>#...

2020-03-24 22:01:17 110

原创 智能指针

一、什么是智能指针智能指针就是用一个对象维护另一个内存空间,当我们new出一块空间地址后,就不用手动的去delete它,而是交给智能指针帮我们做这件事。简单的说智能指针就是自动的帮我们释放new的内存,而不用手动释放。智能指针实现的原理就是通过调用析构函数来间接释放new的内存。二、auto_ptr使用方法#include <iostream>#include <memo...

2020-03-24 21:59:42 317

原创 C++实现智能指针

#include <iostream>#include <memory>using namespace std;// 智能指针自我实现template <typename T>class MyAutoPtr{private: T * _ptr; int * _count;public: MyAutoPtr(T* pt = nullptr)...

2020-03-24 21:58:32 79

原创 堆结构实现

堆结构介绍堆是一种数据结构,在逻辑上是一颗完全二叉树,在存储上是一个数组。堆有大顶堆、和小顶堆之分,大顶堆:对于每个父节点而言,其左右子节点都是小于父节点的,所以根节点也就是堆顶保存的是堆内最大的元素;小顶堆:每个父节点的值都是小于子节点的,堆顶保存堆内最小的元素。堆的存储上面已经介绍了堆是用数组来存储的,但是怎么来存呢?其实就是把一棵完全二叉树按层遍历后的顺序依次放入一个数组里面是一样的,...

2020-03-24 21:57:02 213

原创 谢尔排序

算法原理谢尔排序( Shellsort)的名称源于它的发明者 Donald Shell,该算法是冲破二次时间屏障的第一批算法之一,不过,直到它最初被发现的若干年后才证明了它的亚二次时间界。它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行距离减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,谢尔排序有时也叫作缩减增量排序(diminishing increment s...

2020-03-24 21:54:54 398

原创 插入排序

算法特点当数组元素较少、或者数组接近排序时效率较高插入排序为稳定排序算法原理插入排序是一种简单的排序算法之一,它的原理是对一个数组arr从头开始遍历,当前遍历的位置我们记为pos,然后我们一边遍历一边保证pos前面是已经排好序的子数组后面则先不管这样的状态。为了保持这样的状态我们需要这样做:对于当前pos指向的位置我们将它插入到前面已经拍好序的有序子数组里面,但是怎么插入呢?就和你...

2020-03-24 21:53:21 74

原创 中缀表达式转后缀表达式

基本操作当读到一个操作数的时候,立即把它放到输出中如果读到一个操作符的时候,那么从栈中弹出栈元素直到发现优先级更低的元素为止如果见到一个右括号,那么就将栈中元素弹出,将符号输出直到遇到一个对应的左括号如果读到末尾,将栈中元素弹出直到该栈变成空栈,将符号写到输出中举个栗子:中缀表达式: a + b * c + ( d * e + f ) * g将该中缀表达式转为后缀表达式:a:...

2020-03-24 21:51:50 92

原创 归并排序

合并两个有序数组在讨论归并排序之前我们先来解决下面这个问题:请将下面两个有序数组合并成一个有序数组arr1 = { 4 5 6 9 } ; arr2 = { 2 3 7 10};很显然要合并这两个子数组我们需要用i和j分别指向arr1和arr2从头遍历子数组,并且比较子数组当前位置值的大小,将较小的值赋值到要合并的数组里面然后将对应的i或者j指针向后移动继续遍历就可以了。其实归并...

2020-03-24 21:50:06 75

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除