
数据结构与算法
larry233
字节跳动数据库内核研发
本科专研图形学,自学无果,硕士转攻NLP,调参三年,中SCI,后学数据库,偶有所得,自撰一bug,卒。
展开
-
剑指offer总结
本文是年初找实习时做的总结,为方便理解,建议读者先自行撸一遍剑指offer剑指offer刷题总结爬梯子,矩形覆盖(P10),实际上是斐波那契数列求前k大(P40),一半以上的数字(P39),中位数(P41),用快排:int Partition(vector<int> &nums, int start, int end){ int smaller = start - 1; for (int i = start; i != end; ++i) {.原创 2020-12-25 11:07:16 · 192 阅读 · 0 评论 -
粒子群算法(PSO)示例的C++实现
粒子群算法的介绍和原理见最优化算法之粒子群算法(PSO)优化目标函数如下:该目标函数可改为其他函数,设定的粒子数N=3,迭代次数400次,惯性因子ω=0.9,学习因子c=2,参数可调。使用C++优雅 实现该算法:#include <vector>#include <iostream>#include <cmath>#include <alg...原创 2019-10-29 16:08:56 · 2363 阅读 · 0 评论 -
栈的定义及其基本运算
基本定义:栈(Stack)是n个元素a1,a2,…an,组成的有限序列,记作S =(a1,a2,…,an),并且只能在一端插入和删除元素,n=0时称为空栈。栈的特征:由于栈只能从一端插入和删除元素,故栈具有后进先出(Last in,first out,LIFO)的特性。称插入和删除的一端为栈顶(top),另一端为栈底(bottom)。称插入元素为入栈或压栈(push),删除元素为出栈或弹栈(pop)原创 2016-03-16 23:27:20 · 16525 阅读 · 3 评论 -
栈的应用——实现简易计算器(一)
周日晚上心血来潮,想用栈做个简单的计算器,于是便动手鼓捣了。参照书上的思想,我用了两个栈来解决这个问题。 1)栈S1用来存放运算符,栈S2用来存放操作数。由于运算符为char型而操作数为int型,因此,需要使用类模板来声明两个不同数据类型的栈。 2)为简单起见,只能计算0-9之内的数(由于每次只能读入一个字符入栈,如果是大于等于10的任意数,就要设计另外的算法使“相邻”的两个数字组合为一原创 2016-03-29 13:05:04 · 2848 阅读 · 0 评论 -
栈的应用——圆括号的匹配检验
本次引入类模板来描述栈,关于类模板的定义请参看另一文章: http://blog.youkuaiyun.com/larry233/article/details/50985945 对于输入的一个算术表达式字符串,请用一算法判断其中圆括号是否匹配,若匹配则返回true,否则返回false。本题可用栈的操作来实现:用一外循环来读入表达式中的字符,如遇左括号“(”就进栈;遇到右括号“)”就判断栈是否为空:若栈原创 2016-03-26 12:29:37 · 1089 阅读 · 0 评论 -
贪心算法:旅行商问题(TSP)
TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出。问题描述如下: 有若干个城市,任何两个城市之间的距离都是确定的,现要求一旅行商从某城市出发必须经过每一个城市且只在一个城市逗留一次,最后回到出发的城市,问如何事先确定一条最短的线路已保证其旅行的费用最少?另一个类似的问题为:一个邮递员从邮局原创 2016-03-10 15:44:11 · 82740 阅读 · 13 评论 -
链表的定义及其基本运算
由于链表的描述比较复杂,故此处仅贴出代码,并附上本人遇到的部分问题,以供学习参考之用。#include<iostream>using namespace std;typedef struct tagNode{ int data; tagNode* next;}node;/*该结点可看成是**存放了数值域data和指针域next的递归定义的指针**原来的结点声明报错。出错原创 2016-04-21 15:11:50 · 432 阅读 · 0 评论 -
链表的实现(类模板)
上一篇文章的链表实现有点小问题,此处使用类模板再做描述,不过部分代码有所不同。#include<iostream>#include<cstdlib>#include<cstdio>using namespace std;template<class T>class LinkList; //类的声明template<class T>class ListNode{ //由于结构体不原创 2016-04-22 15:27:16 · 1450 阅读 · 0 评论 -
链栈
//共三个文件,分别为stack.h、stack1.cpp、main.cpp//栈的描述请参阅文章:http://blog.youkuaiyun.com/larry233/article/details/50909550//2016/6/29/0:00//stack.h 定义链栈类stack的界面typedef int element; //定义一个别名,这样的话,如果要用其他类型的栈,只原创 2016-06-29 00:00:52 · 530 阅读 · 0 评论