首先我们要知道什么是分治快排思想,这个思想其实就是在模拟实现qsort算法的时候使用的一个方法,在模拟实现qsort的时
第一步肯定还是要弄懂什么是分治归并思想,这个思想最经典的地方也就是归并排序的实现了。那么我们现在就来复习一下归并排序的实现
首先我们知道在使用vs时,我们时可以通过调式一段代码来找出我们这段代码的逻辑错误在哪里的,但是在Linux中没有对应
双端队列是什么?首先我们来看一下库中的双端队列能够调用的接口有哪些可以看到它的成员函数就只有上面的几个,如果学过数据结构那么双端队列(priority_queue)其实就是一个堆,如果你没有学过双端队列,那么下面我们先来使用以下库中给我们的双端队列是怎么样运行的。可以看到我们传到dp中的数字按照从大到小的优先级顺序被从双端队列中删除了。也就是每一次都取堆顶的元素,然后删除堆顶的元素。那么能不能让顺
首先我们知道在使用vs时,我们时可以通过调式一段代码来找出我们这段代码的逻辑错误在哪里的,但是在Linux中没有对应的图形化界面,我们应该怎么去调试一个代码呢?这里就需要使用道Linux中的一个工具叫做gdb。首先要检测你的操作系统中是否安装了gdb。检测安装gdb使用下面的指令gdb --version如果出现了你所对应的gdb的版本号,代表已经安装了gdb。如果没有安装gdb请在已经安装了gc
第一步肯定还是要弄懂什么是分治归并思想,这个思想最经典的地方也就是归并排序的实现了。那么我们现在就来复习一下归并排序的实现方法。首先归并排序的第一步也就是分治,例如上图将数组中的元素不断的划分直到每一个元素都被划分成单独的一个一个之后再将其不断地合并直到最后完成归并排序。题目1:排序数组题目链接:912. 排序数组 - 力扣(LeetCode)下面是代码实现:class Solution { pu
这几天刷了需要使用分治快排思想去解决的几道比较好的题目,所以写下这篇博客用于复习和以后的复盘。什么是分治快排思想首先我们要知道什么是分治快排思想,这个思想其实就是在模拟实现qsort算法的时候使用的一个方法,在模拟实现qsort的时候,我们知道第一步是需要使用一个随意选择(三数取中)的方法去选择一个随机数作为key的,然后我们需要遍历待排序的数组,将整个数组分成三个部分分别是小于key的元素,等于
文件是什么和文件权限的简单理解首先我们要知道对于Linux中的文件而言一个文件 = 属性+内容。并且对于一个操作系统的使用人员而言,一个文件具有三种权限,分别是可读,可写,可执行。并且操作系统对于每一个用户(除了root权限)对于一个文件而言会倍分成不同的组。对于文件的创建者而言,Linux会将这个用户设置为拥有者(Owner),对于和创建者同一组的人都会被认为是同一个所属组(Group),而除了
最近刷了两道非常经典的滑动窗口题目。感觉对自己帮助非常大,所以写下这篇博客来详细解释一下这两道题目,同时验证自己是否完全理解这两道题目。
这几天学习了前缀和其中包括一维前缀和,以及二维前缀和。一维前缀和题目链接:【模板】前缀和_牛客题霸_牛客网 (nowcoder.com)首先来看一道题目:这道题目的要求很简单,首先需要你创建两个变量同时要给这两个变量赋值,而变量n代表的是数组的长度(数组下标从1开始),而q代表的是它询问你的次数,也即是你需要输出答案的次数。同时这个长度为n的数组,也是由题目输入的,在输入完之后还会输入l和r,然后
最近刷了两道非常经典的滑动窗口题目。感觉对自己帮助非常大,所以写下这篇博客来详细解释一下这两道题目,同时验证自己是否完全理解这两道题目。题目一:找到字符串中所有字母异位词题目链接:https://leetcode.cn/problems/find-all-anagrams-in-a-string/这道题目的要求很简单,即要求我们在s串中找到一个字串,这个子串具有一个特点那就是这个子串中的所有字母都
这篇博客主要是关于使用模板实现list的模拟。什么是list:list是一种序列式容器,可以在常数时间内在任意位置进行插入和删除操作,并且支持前后双向迭代。list的底层是双向链表结构,每个元素存储在独立的节点中,节点通过指针指向前一个元素和后一个元素。 list与forward_list非常相似,最主要的区别在于forward_list是单链表,只能进行向前迭代,因此更简单高效。 与其他序列式容
首先要知道vector是什么vector是什么 1.vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大
string类为何要被做成模板首先要了解一下为什么string类,要被做成模板如下图:string我们知道是用来储存字符串的,对于英文使用asc2码即可以代表所有的英文符号,但是string这个类为何要被做成模板呢?这就要涉及到编码的问题了,首先我们知道对于一个整型(浮点型)而言,计算机是通过记录它的补码来记录值的,那么对于一个文字呢?对于一个文字计算机又是怎么储存它的呢?这里就要提及到第一个编码
在之前所写的日期类中已经包含了类和对象的大部分知识点,但是任然有1欠缺下面便是类和对象的一些欠缺知识点。
这篇博客主要是简单的介绍函数模板和类模板的使用。
public:,_size(0)//开辟空间private:int* _a;int _size;//这只是一个简单的栈int main()free(st);delete sst;return 0;从监视上就可以看到,st
这篇博客主要是简单的介绍函数模板和类模板的使用。函数模板假设现在需要你写多个交换函数用于各种类型的交换,如果一个一个写的话那即浪费时间,也会让代码整体不好看。那么为了解决这种情况就可以使用函数模板。例如下面:using namespace std; // 模板函数 template<class T>//如果你需要的模板函数具有多个参数 //则中间使用,分割例如:template<
在c语言中内存管理函数为malloc和free,而在c++中内存管理的函数则是new和delete。首先来看new和delete对于申请的内置类型的空间是如何处理的内置类型的处理申请连续的多个空间void test1() { int* ret = (int*)malloc(sizeof(int) * 10); int* rett = new int[10];//和malloc 一样都是在堆上申
在之前所写的日期类中已经包含了类和对象的大部分知识点,但是任然有1欠缺下面便是类和对象的一些欠缺知识点。const修饰的对象下面是一个日期类中的打印函数void Print() { cout << _year << "/" << _month << "/" << _day << endl; }假设这里有一个日期类它被c
即在定义类的时候就给内置类型的
本篇博客包含构造函数,默认构造函数,析构函数,默认析构函数,拷贝赋值函数,和运算符重载。假设这里存在一个类里面什么都不包含。class A { };难道在这个类中真的什么都不会含有吗?答案是否定的即使这个类中没有任何一个东西,编译器也会自动的生成6个默认函数。至于什么是默认函数,下面我会指出。构造函数在用c去写一个栈的时候,在很多情况下,我们可能会忘记将栈给初始化,导致出现错误。而c++中为了防止
c++基于c的修改,在写c代码的时候有时会遇到下面的一种情况个全局变量rang,并在主函数中打印rand的值,但是这个时候运行是会报错误的。
可以看到在运行之后,出现了两个错误警告,而这两个警告出现的原因就是
什么是类和对象首先C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。为了表示一个对象c++引入了类的概念,c++的类和c的结构体不同点有很多,其中一个点就是c++的类中可以写函数,而c的结构体显然是不能写函数的。在c++中类的定义是下面这样class className { // 类体:由成员函数和成员变量组成 }; // 一定要注意后面的分号class为定
内联函数在c中存在着一种宏函数,和宏常量但是宏函数,宏函数的优点很明显,它不需要额外的去调用堆栈,因为宏函数和宏常量的本质都是替换,但正因为是替换所以如果在使用宏函数的时候不去手动添加括号,那么极为有可能出现优先级顺序问题。例如下面这样#include<iostream> #define ADD(a,b) a+b//这是一个宏函数,但是没有增加括号 #define Add(a,b)((
c++基于c的修改,在写c代码的时候有时会遇到下面的一种情况#include<stdio.h> #include<stdlib.h> int rand = 0; int main() { printf("%d", rand); return 0; }代码的意思很简单,定义了一个全局变量rang,并在主函数中打印rand的值,但是这个时候运行是会报错误的。命名空间的使用这
我在之前的博客中写过归并排序和快速排序的递归实现,最近了解到了归并排序和,快速排序的非递归实现,写下这篇博客检测自己是否还有不懂的地方。快速排序的递归实现首先要知道快速排序的递归实现思路是先确定一个key,然后使用挖坑法,双指针法或是前后指针法,将数组分为三个部分,将key放到中间,然后递归左半部分和右半部分,递归结束的条件也就是当递归的区域不存在时或递归区域为一个数时停止。双指针法实现首先双指针
最近学习了归并排序和快速排序,在这里写一篇博客用于复习并且检验自己是否有遗漏知识点的情况。
Copyright © 2005-2023 51CTO.COM 版权所有 京ICP证060544号