- 博客(149)
- 收藏
- 关注
原创 笔试强训之每日一题(九)
笔试强训之每日一题(九)文章目录笔试强训之每日一题(九)字符串压缩题目链接题目描述题目思路题目代码配对交换题目链接题目描述题目思路题目代码字符串压缩题目链接题目描述字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:"aabcccccaaa"输出:"a2b1c5a3"示例2:输入:"a
2022-01-30 21:55:11
234
原创 笔试强训之每日一题(八)
笔试强训之每日一题(八)文章目录笔试强训之每日一题(八)单词缩写题目描述输入描述输出描述题目代码URL化题目描述题目解析题目代码单词缩写题目描述在日常书面表达中,我们经常会碰到很长的单词,比如"localization"、"internationalization"等。为了书写方便,我们会将太长的单词进行缩写。这里进行如下定义:如果一个单词包含的字符个数达到或者超过10则我们认为它是一个长单词。所有的长单词都需要进行缩写,缩写的方法是先写下这个单词的首尾字符,然后再在首尾字符中间写上这个单词去掉
2022-01-29 22:12:44
162
原创 笔试强训之每日一题(七)
笔试强训之每日一题(七)文章目录笔试强训之每日一题(七)判断是否互为字符重排题目链接题目描述题目思路题目代码回文排列题目链接题目描述题目思路题目代码判断是否互为字符重排题目链接题目描述给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = “abc”, s2 = "bca"输出: true示例 2:输入: s1 = “abc”, s2 = "bad"输出: false题目思路当两个字符串的字
2022-01-28 21:13:43
400
原创 硬核两万字带你理解C++之多态
多态文章目录多态多态的构成条件虚函数虚函数的重写C++11 override和final重载、覆盖(重写)、隐藏的对比抽象类概念接口继承和实现继承多态的原理虚函数表动态绑定和静态绑定单继承和多继承关系的虚函数表单继承的虚函数表多继承的虚函数表继承和多态常见的面试问题多态问答题多态:多态就是函数调用的多种形态,调用函数更加灵活,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态话不多说,我们首先来看这样的一段程序,让大家感知一下多态是什么意思,这是一段不构成多态的程序:class Per
2022-01-27 22:52:53
479
原创 笔试强训之每日一题(六)
笔试强训每日一题(六)文章目录笔试强训每日一题(六)不要二题目链接题目描述输入描述输出描述题目解析题目代码字符串转成整数题目链接题目描述输入描述返回值描述题目解析题目代码不要二题目链接题目描述二货小易有一个W*H的网格盒子,网格的行编号为0~H-1,网格的列编号为0~W-1。每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术
2022-01-26 19:51:09
227
原创 笔试强训之每日一题(五)
笔试强训每日一题(五)统计回文题目描述“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。花花非常喜欢这种拥有对称美的回文串,生日的时候她得到两个礼物分别是字符串A和字符串B。现在她非常好奇有没有办法将字符串B插入字符串A使产生的字符串是一个回文串。你接受花花的请求,帮助她寻找有多少种插入办法可以使新串是一个回文串。如果字符串B插入的位置不同就考虑为不一样的办法。例如:A = “aba”,B = “b”。这里有4种把B插入A的办法:* 在A的第一个字母之
2022-01-25 18:26:43
240
原创 笔试强训之每日一题(四)
笔试强训每日一题(四)文章目录笔试强训每日一题(四)计算糖果题目链接题目描述输入描述输出描述题目解析题目代码进制转换题目链接题目描述输入描述输出描述解题思路一解题代码一解题思路二解题代码二计算糖果题目链接题目描述A,B,C三个人是好朋友,每个人手里都有一些糖果,我们不知道他们每个人手上具体有多少个糖果,但是我们知道以下的信息:A - B, B - C, A + B, B + C. 这四个数值.每个字母代表每个人所拥有的糖果数.现在需要通过这四个数值计算出每个人手里有多少个糖果,即A,B,C。
2022-01-24 15:01:36
234
原创 笔试强训之每日一题(三)
笔试强训每日一题(三)文章目录笔试强训每日一题(三)字符串中找出连续最长的数字串题目链接题目描述解题思路一解题代码一解题思路二解题代码二数组中出现次数超过一半的数字题目链接题目描述解题思路一:排序解题代码一解题思路二:抵消解题代码二字符串中找出连续最长的数字串题目链接题目描述输入一个字符串str,输出str中连续最长的数字串输入描述:个测试输入包含1个测试用例,一个字符串str,长度不超过255。输出描述:在一行内输出str中里连续最长的数字串解题思路一使用三个string对象,
2022-01-23 23:31:26
499
原创 C++之继承详解
继承文章目录继承继承的概念及定义继承的概念继承定义定义格式继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象赋值转换(切片)继承中的作用域(隐藏)派生类的默认成员函数构造函数拷贝构造函数赋值重载函数析构函数继承和友元继承与静态成员菱形继承和菱形虚拟继承菱形继承菱形虚拟继承继承和组合继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特 性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对
2022-01-23 11:23:53
1455
原创 笔试强训之每日一题(二)
笔试强训每日一题(二)文章目录笔试强训每日一题(二)排序子序列题目链接题目描述题目解析解题代码倒置字符串题目链接题目描述题目解析解题代码排序子序列题目链接题目描述牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出
2022-01-22 22:33:18
859
原创 笔试强训之每日一题(一)
笔试强训每日一题文章目录笔试强训每日一题组队竞赛题目描述解题思路解题代码分配饼干问题题目描述解题思路解题代码在字符串中删除特定的字符题目描述解题思路解题代码组队竞赛题目描述牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,一共组成n个队伍,即每个队伍3人,牛牛发现队伍的水平值等于该队伍队员中第二高水平值。例如:一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3一个队
2022-01-21 23:27:56
856
原创 进程地址空间详解
进程地址空间文章目录进程地址空间验证地址空间的基本排布进程地址空间究竟是什么?地址空间和物理内存之间的关系为什么要存在地址空间?我们在学习C语言期间,经常可以提及到这些区域,有一个问题:这里的地址空间是内存吗?答案是这里的地址空间并不是内存。这里的地址空间是进程地址空间,下面我们就讲解进程地址空间。这段空间中自下而上,地址是增长的,栈是向地址减小方向增长(栈是先使用高地址),而堆是向地址增长方向增长(堆是先使用低地址),堆栈之间的共享区,主要用来加载动态库。接下来我们来说明四个问题:验证地址空
2022-01-17 14:20:49
10176
23
原创 Linux之进程基础概念以及环境变量详解
进程文章目录进程冯诺依曼式结构五大硬件单元操作系统概念操作系统层状结构理解"管理"进程什么是进程?PCB如何描述进程?task_struct内容分类通过系统调用获取进程标示符查看进程方式ps命令/proc目录top命令上下文概念进程切换通过系统调用创建进程—fork理解fork进程状态Linux操作系统下的进程状态僵尸进程孤儿进程进程的优先级PRI and NI怎么调整优先级?进程的其他概念环境变量基本概念常见环境变量和环境变量相关的命令通过系统调用获取环境变量getenv环境变量通常是具有全局属性的环境
2022-01-15 11:39:53
1592
1
原创 剑指offer经典题目二:旋转数组的最小数字
剑指offer经典题目二题目链接:旋转数组的最小数字题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个非递减排序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数组的最小值为1。NOTE:给出的所有元素都大于0,若数组大小为0,请返回0。题目要求给一个非递减排序的数组的一个旋转,需要输出旋转数组的最小元素,我们可以直接进行遍历去找最小的那个数,但是这种方法肯定是效率最低的核心考点:数组理解,二分查
2022-01-11 23:18:44
539
原创 剑指offer经典题目一:二维数组中的查找
剑指offer经典题目一题目链接:二维数组中的查找有一个二维数组,数组的每行从左到右是递增的,每列从上到下是递增的,在这样的数组中查找一个数字是否存在。要求时间复杂度小于O(N)。解题思路:这道题本质上是查找一个数字,查找的过程,本质是排除的过程,如果一个一个遍历,一次只能排除一个,效率低,那么应该怎么做呢?这时我们需要用到这个数组的特性:数组的每行从左到右是递增的,每列从上到下是递增的,利用这个特性我们可以找到特殊的数字:右上角的数字或者左下角的数字,假如我们拿val值和右上角的数字进行比较
2022-01-10 10:09:13
427
1
原创 C++STL之优先级队列详解
priority_queue文章目录priority_queuepriority_queue的使用priority_queue在OJ中的使用数组中第k个最大元素priority_queue模拟实现push的模拟实现pop模拟实现迭代器区间构造函数模拟实现size的模拟实现empty的模拟实现top的模拟实现swap的模拟实现仿函数typename仿函数的变异玩法翻译:优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元
2021-12-13 21:21:26
4295
4
原创 C++之模板进阶
模板进阶文章目录模板进阶非类型模板参数非类型模板参数缺省值模板的特化概念函数模板的特化类模板的特化全特化偏特化模板分离编译什么是分离编译模板总结优点缺点没了解过模板的读者,先学习模板初阶:C++之模板初阶通过模板我们可以实现泛型编程,模板分为函数模板和类模板,下面我们就说点模板进阶的一些东西。非类型模板参数模板参数分类类型形参与非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模
2021-12-10 19:17:49
1892
1
原创 C++STL之stack和queue以及deque详解
stack和queue以及deque文章目录stack和queue以及dequestack的使用queue的使用栈的OJ题练习最小栈栈的压入、弹出序列逆波兰表达式求值什么是适配器?栈和队列的模拟实现栈的模拟实现队列的模拟实现dequedeque的使用deque的底层实现deque的优缺点stack文档翻译:stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层
2021-11-30 13:36:16
2195
原创 C++STL之list的使用和模拟实现
list文章目录listlist成员函数的使用list的构造函数list的遍历方式assignpush_back和push_frontpop_back和pop_frontinserteraseclearswapsortuniqueremove容器的迭代器的分类容器算法迭代器之间的关系list的模拟实现list迭代器的实现list迭代器和const迭代器模拟实现vector迭代器和list迭代器比较push_back模拟实现push_front模拟实现insert模拟实现erase模拟实现pop_back模
2021-11-30 13:21:58
1793
1
原创 Linux开发工具vim以及git的使用详解
Linux开发工具文章目录Linux开发工具vim的基本概念与操作命令模式常见命令复制与粘贴文本修改替换删除光标定位底行模式常见命令批量化替换vim配置vim配置文件位置vim的环境设置参数Linux编译器-gcc/g++使用动态链接和静态链接gdb的使用背景开始使用进入gdb退出gdb调试命令自动化构建工具-make/Makefile背景什么是make和makefile?Makefile的编写Linux下的第一个程序—进度条行缓冲区回车和换行和回车换行进度条小程序git和gitee使用git命令行安装g
2021-11-26 15:25:01
9440
原创 Linux中的yum安装介绍
Linux中的yum安装文章目录Linux中的yum安装Linux软件包管理器 yum什么是软件包yum软件包管理器查看软件包安装卸载Linux软件包管理器 yumLinux当中怎么安装软件呢?Linux软件安装方式:源码安装rpm包安装yum(推荐)什么是软件包在Linux下安装软件,一个通常办法是下载到程序的源代码,并进行编译,得到可执行程序,但是这样对于一个小白用户太不友好了,但是这样比较麻烦,于是就有一些人把一些常用的软件提前编译好,做成软件包(windows
2021-11-17 09:31:55
1648
原创 C++STL之vector的使用和实现
vector文章目录vector什么是vector?vector的使用构造函数vector成员函数的使用vector的模拟实现迭代器和const迭代器的模拟实现无参构造函数的模拟实现size、capacity、empty成员函数的模拟实现operator[]模拟实现reserve模拟实现resize模拟实现push_back模拟实现pop_back模拟实现迭代器失效问题insert的模拟实现erase的模拟实现析构函数拷贝构造函数深拷贝传统写法深拷贝现代写法迭代器构造函数与swap函数模拟实现赋值重载赋值
2021-11-16 09:50:55
890
4
原创 Linux权限的概念以及shell详解
Linux权限的概念以及shell文章目录Linux权限的概念以及shell权限的概念修改权限\>和\>>修改权限—八进制法修改拥有者和所属组目录的权限目录的读权限目录的写权限目录的可执行权限粘滞位sudo报错的解决umaskshell命令以及运行原理什么是shell外壳?shell的作用shell和bash权限的概念**权限:**一件事情是否能被特定的人做(执行,完成,拥有)linux下有两种用户:超级用户、普通用户超级用户:可以在linux系统下做任何事情,不受限制普通用
2021-11-08 16:32:23
2608
原创 C++STL之string类的使用和实现
文章目录STL简介什么是STLSTL的版本STL的六大组件STL的重要性string为什么学习string类?C语言中的字符串标准库中的string类string类string类对象的构造函数string类的成员函数的使用string类的模拟实现经典的string类问题浅拷贝深拷贝深拷贝和赋值的现代写法string类的模拟实现模拟实现string类的构造函数模拟实现string类的reserve模拟实现push_back模拟实现swap函数+=字符运算符重载:+=字符串运算符重载模拟实现resize获取_s
2021-11-06 17:30:23
1652
2
原创 Linux介绍以及初学指令详解
Linux文章目录LinuxLinux背景介绍操作系统我们为什么学习Linux以及Linux相关知识Linux初学指令pwd指令mkdir指令mkdir -ptree指令touch指令ls指令cd指令cd指令的快捷键cd ~cd -stat命令rmdir命令rm命令ls选项ls -lls选项ls -als -alls常用选项man指令cp指令mv指令cat指令cat -n选项tac指令cat -b选项cat -s选项more指令less指令head指令head -数字选项tail指令tail -数字选项时
2021-11-02 11:54:22
389
原创 C++之模板初阶
模板初阶泛型编程在计算机程序设计领域,为了避免因数据类型的不同,而被迫重复编写大量相同业务逻辑的代码,人们发展的泛型及泛型编程技术。什么是泛型呢?实质上就是不使用具体数据类型(例如 int、double、float 等),而是使用一种通用类型来进行程序设计的方法,该方法可以大规模的减少程序代码的编写量,让程序员可以集中精力用于业务逻辑的实现。泛型也是一种数据类型,只不过它是一种用来代替所有类型的“通用类型”我们通常如何实现一个通用的交换函数呢?void Swap(int& left, i
2021-10-28 16:19:57
575
1
原创 C++实现日期相关OJ题
日期相关OJ题文章目录日期相关OJ题日期差值计算日期到天数转换求1+2+3+...+n日期累加打印日期日期差值题目描述有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天输入描述有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD输出描述每组数据输出一行,即日期差值示例1输入:2011041220110422输出:11解题代码#include<iostream>using namespace std;
2021-10-28 16:11:38
549
原创 C/C++内存管理详解
C/C++内存管理文章目录C/C++内存管理C/C++内存分布C语言中动态内存管理方式C++中动态内存管理operator new与operator delete函数operator new与operator delete的类专属重载new和delete的实现原理内置类型自定义类型定位new表达式(placement-new)常见面试题malloc/free和new/delete的区别内存泄漏什么是内存泄漏呢?内存的静态分配和动态分配的区别主要是两个:一是时间不同。静态分配发生在程序编译和连接的时候。
2021-10-23 10:50:37
788
原创 C++之类和对象(三)
类和对象(三)文章目录类和对象(三)再谈构造函数构造函数体赋值初始化列表explicit关键字static成员C++11 的成员初始化新玩法友元友元函数友元类内部类再次理解封装再次理解面向对象我们首先来看一个关于构造函数和析构函数调用顺序相关的一道题:class A{public: A() { cout<<"A()"<<endl; } ~A() { cout<<"~A()"<<e
2021-10-22 13:45:02
933
1
原创 C++之类和对象(二)
文章目录类和对象(二)构造函数构造函数概念构造函数特征析构函数析构函数概念析构函数特征拷贝构造函数拷贝构造函数概念拷贝函数特征运算符重载函数日期类的实现日期类的运算符重载函数const成员函数const修饰类的成员函数取地址及const取地址操作符重载取地址操作符重载const取地址操作符重载类和对象(二)在一个空类中,我们都知道一个空类的大小是一字节,那么空类真的什么都没有吗?答案是并不是,在我们写任何一个空类时,编译器其实都会自动生成6个默认的成员函数。那么这6个默认的成员函数是什么呢?在这篇博客
2021-10-15 18:34:08
529
原创 C++之类和对象(一)
类和对象(一)文章目录类和对象(一)面向过程和面向对象类的引入类的定义类的两种定义方式类的作用域类的访问限定符和封装访问限定符封装类的实例化如何计算类对象的大小类对象的存储方式this指针面向过程和面向对象C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。但是C++不是一个纯面向对象的语言,因为C++兼容C,故C++既有面向过程,也有面向对象,可以混合编程类的引入首先在C语言
2021-10-10 18:34:21
373
1
原创 硬核两万字文章带你C++入门
C++入门文章目录C++入门C++关键字命名空间C++输入&输出缺省参数缺省参数概念缺省参数分类全缺省参数半缺省参数函数重载函数重载概念名字修饰extern"C"引用引用概念引用特性常引用引用的使用场景传参返回值传值、传引用效率比较函数传参传值和传引用的效率比较值和引用作为返回值类型的性能比较引用和指针的区别内联函数概念特性auto关键字(C++11)auto的使用细则auto不能推导的场景基于范围的for循环(C++11)范围for的语法范围for的使用条件指针空值---nullptr(C++1
2021-09-29 15:18:31
13603
22
原创 数据结构之八大排序算法(C语言实现)
排序文章目录排序排序的概念及其应用排序的概念排序的定义排序的稳定性排序在现实生活中的应用常见的排序算法常见排序算法的实现直接插入排序希尔排序选择排序堆排序冒泡排序冒泡排序的优化快速排序Hoare法快速排序时间复杂度快速排序的优化挖坑法前后指针法快速排序非递归归并排序归并排序非递归实现计数排序常见排序算法的性能总结常见排序算法的时间复杂度、空间复杂度、稳定性各类排序算法的稳定性分析稳定性的意义排序的概念及其应用排序的概念排序的定义数据结构必学的结构之一,在现实生活中应用多,所谓排序,就是使一串记录
2021-09-21 14:33:25
1810
9
原创 数据结构之二叉树基础OJ练习另一颗树的子树
另一颗树的子树题目来源:另一颗树的子树题目描述:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4
2021-09-20 11:08:41
383
原创 数据结构之二叉树的基础OJ练习二叉树的遍历
二叉树的前序遍历题目来源:二叉树的前序遍历题目描述:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例 1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]解题思路:规则是若二叉树为空,则空操作返回,否则先
2021-09-20 10:50:22
590
原创 数据结构之二叉树基础OJ练习对称二叉树
对称二叉树题目来源:对称二叉树题目描述:给定一个二叉树,检查它是否是镜像对称的。例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \3 4 4 3但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \2 2 \ \ 3 3解题思路:判断一个二叉树是不是镜像对称,也是需要用到分治的思想,判断一颗二叉树是否对称,相当于判断它的左右子树是不是镜像对称,判断两个左
2021-09-19 21:09:26
252
原创 数据结构之二叉树基础OJ练习检查两颗树是否相同
检查两颗树是否相同题目来源:检查两颗树是否相同题目描述:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false解题思路:二叉树的好多问题
2021-09-19 20:42:08
591
原创 数据结构之二叉树基础OJ练习单值二叉树
单值二叉树题目来源:单值二叉树题目描述:如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回 true;否则返回 false。示例 1:输入:[1,1,1,1,1,null,1]输出:true示例 2:输入:[2,2,2,5,2]输出:false解题思路:==具有传递性,比如:a==b && a==c,b==e && b==f,可以得到a==b==c==e==f该题的思路是比较一个父亲和左右
2021-09-19 11:35:00
240
原创 数据结构之二叉树的实现
二叉树的实现文章目录二叉树的实现二叉链表结构:建立节点之间的关系二叉树的遍历前序遍历中序遍历后序遍历层序遍历节点个数以及高度二叉树结点个数二叉树叶子节点个数二叉树第k层节点个数二叉树的深度二叉树查找值为x的节点二叉树的创建和销毁二叉树的创建二叉树销毁判断二叉树是否是完全二叉树二叉树的链式存储结构是指,用链表来表示一棵二叉树,即用链来指示元素的逻辑关系。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址 。链式结构又分为二叉链和三
2021-09-16 08:43:53
327
原创 数据结构之堆的应用—TopK问题
TopK问题Top-K问题:即求数据结合中前K个最大的元素或者最小的元素,一般情况下数据量都比较大。这里我们讲解三种方法:文章目录TopK问题方法一:排序方法二:将N个数建堆,取出前K个方法三:建一个K个数的堆(最优)方法一:排序思路:将所有数据进行排序,取前K个元素即可void swap(int *p1,int *p2){ int temp=*p1; *p1=*p2; *p2=temp;}void AdjustDown(int *a,int n,int
2021-09-04 22:21:00
382
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅