数据结构
木槿花better
这个作者很懒,什么都没留下…
展开
-
数据结构总结
绘制思维导图,可以帮助我们更好梳理知识脉络,从今天开始我开始梳理知识零碎点和一些主干原创 2018-08-10 16:55:20 · 239 阅读 · 0 评论 -
剑指offer练习部分:替换空格,从尾到头打印链表,栈模拟队列
替换空格,从尾到头打印链表,栈模拟队列,青蛙跳问题请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。class Solution {public: char* Mstrcpy(char * des,const char* str){ char * ret...原创 2019-05-06 19:19:03 · 263 阅读 · 0 评论 -
排序1 O(nlogn)
nlogn的排序:堆排,快排,归并堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 void adjustHeap(int a[], int i, int size) { //int max; int l = 2 * i + 1; in...原创 2019-05-11 20:57:22 · 655 阅读 · 0 评论 -
排序2:自定义数据的排序(仿函数和lambda)
利用仿函数和泛型编程完成自定义数据的排序template<class T=vector<PAIR>,class K>void mysort(T & num,const K &cmp){ int size = num.size(); for (int i = 0; i <= size-2; i++) { for (int j = 0;...原创 2019-05-11 21:54:18 · 1050 阅读 · 0 评论 -
高精度加法
如下,是加法的方法。#include<string>#include<vector>#include<algorithm>#include<iostream>using namespace std;template <class T>void reverse(T& s){ int begin = 0; ...原创 2019-05-26 19:39:42 · 235 阅读 · 0 评论 -
动态规划:连续最大和
最简单和经典的一维和线性dp:斐波那契和连续最大和问题:把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。暴力递归:1,把问题转化为规模缩小了的同类问题的子问题2,有明确的不需要继续进行递归的条件(base case)3,有当得到了子问题的结果之后的决策过程4,不记录每一个子问题的解。而我们需要把这种...原创 2019-05-23 20:22:58 · 761 阅读 · 0 评论 -
一些牛客网上的选择题
已知int a[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int **q=p;表达式*(p[0]+1)+**(q+2)的值是____。*(p[0]+1)+**(q+2) 其中p[0]=a也就是a[0]的地址,p[0]+1=a+1就是a[1]的地址,*(p[0]+1)就是a[1]的值就是2,**q=p --> *q=&p ...原创 2019-06-06 22:43:41 · 428 阅读 · 0 评论 -
动态规划:对角线行走
沿着对角线,重点是发现状态转移方程:dp[i][j] = dp[i - 1][j] + dp[i][j - 1];#include <iostream>#include <vector>using namespace std;int main(){ int n=1, m=2; while ( cin >> n >> m) {...原创 2019-05-29 22:19:57 · 668 阅读 · 0 评论 -
动态规划:(二维)地下城游戏,最大公共子串
地下城游戏(leetcode)一些恶魔抓住了公主(P)并将她关在了地下城的右下角。地下城是由 M x N 个房间组成的二维网格。我们英勇的骑士(K)最初被安置在左上角的房间里,他必须穿过地下城并通过对抗恶魔来拯救公主。骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0 或以下,他会立即死亡。有些房间由恶魔守卫,因此骑士在进入这些房间时会失去健康点数(若房间里的值为负整...原创 2019-06-11 22:04:21 · 182 阅读 · 0 评论 -
STL: unordered_map 自定义键值类型的使用
当试图使用自定义类型作为 unordered_map 的键值时,则必须为自定义类型定义 Hash 函数与相等的判断条件。我们先定义自定义类型作键值,代码如下:struct KEY{ int first; int second; int third; KEY(int f, int s, int t) : first(f), second(s), third(...转载 2019-04-12 20:34:24 · 1423 阅读 · 0 评论 -
三指针操作链表逆置
之前以为链表逆置是利用头插法。今天看到一个三指针法,分享一下。class Solution {public: ListNode* ReverseList(ListNode* pHead) { if(pHead->next==NULL||pHead==NULL) return pHead; ListNode* pre=NU...原创 2019-04-01 15:44:47 · 415 阅读 · 0 评论 -
波峰波谷数组
如果连续数字之间的差严格地在正数和负数之间交替,则数字序列称为摆动序列。第一个差(如果存在的话)可能是正数或负数。少于两个元素的序列也是摆动序列。例如,[1,7,4,9,2,5]是一个摆动序列,因为差值(6,-3,5,-7,3)是正负交替出现的。相反,[1,4,7,2,5]和[1,7,4,5,5]不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个...原创 2019-03-31 22:46:31 · 2082 阅读 · 0 评论 -
c语言 栈和队列的实现
前提知识顺序表优点:可以随机访问,cpu高速缓存利用率高,不涉及(较少)进行插入和删除操作,应该使用顺序表一般而言,我们使用顺序表(数组)的形式建立 栈这一数据结构。 栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。其特点是先进后出,模仿c++stl的stack和queue,我...原创 2018-08-14 22:22:10 · 6696 阅读 · 2 评论 -
结构体的指针和C语言函数传参
数据结构的基础,是函数的传递和结构体的应用。首先从函数传参做起笔记,c语言函数传参的本质都是传值。我的大学教材上举例为传值和传地址;我借用百度上的一些回答作为引用:(1)传值,就是把你的变量的值传递给函数的形式参数,实际就是用变量的值来新生成一个形式参数,因而在函数里对形参的改变不会影响到函数外的变量的值。(2)传址,就是传变量的地址赋给函数里形式参数的指针,使指针指向真实的变量的...原创 2018-09-24 18:58:33 · 6216 阅读 · 1 评论 -
链表和顺序表(参考stl源码,使用c语言实现)
顺序表优点:可以随机访问,cpu高速缓存利用率高,不涉及(较少)进行插入和删除操作,应该使用顺序表。顺序表,不论是动态开辟,还是固定大小,一般放置在栈上,不用程序员手动开辟空间 链表:主要运用2种,A单向不带头结点的非循环链表 B双向带头结点的循环链表特点是,由程序员手动开辟空间,存放在堆上。频繁的插删时,应该使用链表。 以链表代码为例结构体:t...原创 2018-09-29 18:45:24 · 968 阅读 · 0 评论 -
C++类模板实践(二叉树类)1
先贴上我代码(未成品,我就先写了构造和析构,先序遍历代码),需要用的人可以直接用。造轮子方便我去了解STL,了解代码。我写代码时踩过的一些小坑,作为一些小知识:发生了几个语法,编译,链接bug。第一个:模板的typedef,得声明类型:typedef BinaryTreeNode<T> Node;第二个:struct BInaryTreeNode,构造时采用匿名...原创 2018-11-11 17:47:08 · 780 阅读 · 0 评论 -
两数相加和mylist(单链表)
给出两个非空的链表用来表示两个非负的整数。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 ...原创 2019-03-10 00:42:48 · 375 阅读 · 0 评论 -
STL:序列式容器deque笔记
deque无容量概念,动态分段,deque的结构稍显复杂不过也可以很好概括,一块map,每个元素(node)存储指针,指向一段buffer(缓冲区),缓冲器自然不是连续的,但是由于映射(map上指针指向空间)类似hash,可以视作逻辑上的连续,类似list的逻辑上连续。P.J. Plauger版本的deque我没看,侯捷描绘的SGI版本deque图如下实现比较繁琐,明白数据结构和...原创 2019-03-19 19:42:15 · 248 阅读 · 0 评论 -
STL:priority_queue和heap笔记
heap数据结构,图和原理网上很多。我的一个堆排序,这是堆思想的一个应用。 void adjustHeap(int a[], int i, int size) { //int max; int l = 2 * i + 1; int r = 2 * i + 2; int max = i; //vs 2017 会检测&&右边的,故不能将l < si...原创 2019-03-19 19:52:35 · 383 阅读 · 0 评论 -
STL:快速排序和三数取中
自己写一个快速排序,原理网上也很多。STL 的sort比较好用,会自动判断使用heap sort或者Intro quick sort(类似三数取中法快排)。 int quickSortPart(int a[],int left,int right) { int temp = a[right]; while (left<right) { while (left&l...原创 2019-03-19 20:08:57 · 908 阅读 · 0 评论 -
http头部常见信息
准备写一个http类型的服务器,基于应用层,知识查看于https://www.php.cn/manual/view/35624.htmlETagHTTP 响应报头为资源的特定版本的标识符。它允许缓存更高效,并节省带宽,因为如果内容没有改变,Web 服务器不需要发送完整的响应。另一方面,如果内容发生了变化,etags 有助于防止资源的同时更新互相覆盖(“空中冲突”)。如果给定 URL...原创 2019-07-21 10:55:34 · 512 阅读 · 0 评论