
数据结构算法
文章平均质量分 92
CXX数据结构算法
芝士锅
这个作者很懒,什么都没留下…
展开
-
基于图的路径搜索算法(BFS Dijkstra A*)代码实现
BFStemplate<typename Location, typename Graph>std::unordered_map<Location, Location>breadth_first_search(Graph graph, Location start) { std::queue<Location> frontier; frontier.push(start); std::unordered_map<Location,原创 2021-10-09 23:29:57 · 1403 阅读 · 0 评论 -
STL中的所有算法(70个)
STL算法部分主要由头文件<algorithm>,<numeric>,<functional>组成。要使用 STL中的算法函数必须包含头文件<algorithm>,对于数值算法须包含<numeric>,<functional>中则定义了一些模板类,用来声明函数对象。 STL中算法大致分为四类: 1、非可变序列算法:指不直接修改其所操作的容器内容的算法。 2、可变序列算法:指可以修改它...原创 2020-08-27 19:28:08 · 366 阅读 · 0 评论 -
此声明没有存储类或类型说明符
错误类型如下:函数体外进行赋值的时候会出现这个问题。比如int n;n = 1;int main(){ return 0;}在第二行的时候就会出现这个错误。解决办法就是去掉函数体外的赋值(n=1),改到函数体内部。int n;int main(){ n = 1; return 0;}在百度知道上找到一个回答,上面说“函数外只能定义全局变量...转载 2019-01-11 20:41:09 · 10816 阅读 · 0 评论 -
二分搜索树实现
class BST {private: struct Node { int key; string value; Node* left; Node* right; Node(int key, string value) { this->key = key; this->value = value; this->left = NULL;...原创 2018-10-01 22:22:36 · 179 阅读 · 0 评论 -
堆和堆实现、堆排序
最大堆实现:class maxHeap{public: maxHeap(int capa) :capacity(capa),count(0){ data = new int[capa+1]; } ~maxHeap() { delete[] data; } int size() { return count; } void insert(int item) { da...原创 2018-10-01 22:15:53 · 193 阅读 · 0 评论 -
快速排序代码
容器实现版:class Solution {public: void quickSort(vector<int> &arr) { quick(arr, 0, arr.size() - 1); }private: void quick(vector<int> &arr, int left, int right) { if (left ...原创 2018-09-24 12:16:35 · 991 阅读 · 0 评论 -
常用排序算法总结
排序算法 平均时间复杂度 最坏时间复杂度 空间复杂度 稳定性 是否原地 插入排序 O(N^2) O(N^2) O(1) 稳定 是 冒泡排序 O(N^2) O(N^2) O(1) 稳定 堆排序 O(NLogN) O(NLogN) O(1) 不稳定 是 归并排...原创 2018-09-24 11:44:53 · 151 阅读 · 0 评论 -
error LNK2005: “找到一个或多个多重定义的符号” 已经在 main.obj 中定义 的解决方法
这里我有三个源文件:Base.hpp, Base.cpp 和 main.cpp在Base.hpp里面定义一个基类,注意,基类只包含构造函数和析构函数的声明,函数在Base.cpp里实现。此外在Base.hpp中还有一个函数的定义(函数声明和定义都在Base.hpp文件中)三个文件代码如下:// Base.hpp#ifndef BASE_HPP#define BASE_HPP#...原创 2018-08-13 22:36:12 · 19200 阅读 · 9 评论 -
LeetCode刷题指南之排序篇--快速排序
//写法一class Resulotion{public: void quickSort(vector<int> &arr, int left, int right){ if (left >= right) return; int p = partition(arr, left, right); quickSort(arr, left, p - 1);...原创 2018-07-08 11:34:52 · 3686 阅读 · 0 评论 -
LeetCode刷题指南之--1数组篇_Search in Rotated Sorted Array II
LeetCode. 33 Search in Rotated Sorted Array II原创 2018-04-21 12:58:15 · 228 阅读 · 0 评论 -
LeetCode刷题指南之--1数组篇_Search in Rotated Sorted Array
LeetCode 33 Search in Rotated Sorted Array首先,不管有序数组怎么旋转,旋转之后肯定至少有一侧是顺序的比如下图中第二行的右半侧和第三行的左半侧,可以利用这个条件进行判断判读右半侧是否有序时的条件是:nums[mid] < target <= nums[right] 需要考虑到右侧的边界,左侧同理。class Solution {public:...原创 2018-04-21 11:21:20 · 150 阅读 · 0 评论 -
LeetCode刷题指南之--1数组篇_Remove Duplicates from Sorted Array II
LeetCode.80 Remove Duplicates from Sorted Array II索引i表示新数组的索引,原地移除使用后面元素覆盖掉前面重复次数超过2次的元素class Solution {public: int removeDuplicates(vector<int>& nums) { //当数组长度小于等于2时,直接返回数组长度...原创 2018-04-21 10:44:49 · 136 阅读 · 0 评论 -
LeetCode刷题指南之--1数组篇_Remove Duplicates from Sorted Array
LeetCode:26. Remove Duplicates from Sorted Array// 时间复杂度O(n),空间复杂度O(1)class Solution {public: int removeDuplicates(vector<int>& nums) { if(0 == nums.size()) return 0;//保证输入异常时程序...原创 2018-04-19 22:18:32 · 125 阅读 · 0 评论 -
C++ 引用和指针的区别
指针:是一个地址变量,指向的地址可以被改变,不依赖于其它变量引用:C++中的引用在低层是通过常指针来实现的。也就是说是个常量指针,定义时不能为空,必须初始化,初始化以后不能再指向其它地址。因为是个常量,所以必须从一而终,不能更改。 有一点需要注意的是:sizeof(指针) 的值永远是 4sizeof(引用) 的值是不一定的,根据所引用的对象类型而定比如:...原创 2017-11-14 12:47:50 · 221 阅读 · 0 评论