- 博客(20)
- 问答 (1)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 C++串的模式匹配(BF,KMP详解)
C++串的模式匹配在数据结构的学习过程中,继顺序表,链表,队列,栈之后的一个部分便是串。本质上串也是线性表的一种,其当然可以分为顺序存储结构与链式存储结构。它的一些接口也已经由STL中的<string.h>配备完全,需要时直接调用即可。本文将主要介绍串的模式匹配部分,包括概念,Brute Force(BF)和KMP共三部分。因为我在学习和用C++实现KMP时,发现了诸多问题。所以本文将着重详解C++实现的KMP算法(包括生成next表)。概念所谓串的模式匹配,用白话讲,就是在主串(串S)
2021-05-28 16:35:02
3783
原创 剑指 Offer 35. 复杂链表的复制
/*// Definition for a Node.class Node {public: int val; Node* next; Node* random; Node(int _val) { val = _val; next = NULL; random = NULL; }};*/class Solution {public: Node* copyRandomList(Node* h
2022-02-02 19:49:28
525
原创 23. 合并K个升序链表
合并K个升序链表要拆解成多个合并两个升序链表。 下面这种写法的时间复杂度还是很高的,如果需要优化,就采用分治的方法(递归)。每次取两个链表合并,变成树形结构,这样时间复杂度要比从头到尾遍历vector要好很多。logn VS n。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullp
2021-12-29 05:46:51
177
原创 LeetCode 55. 跳跃游戏
和跳跃游戏II一样,只要看最远覆盖距离就ok。区别是这里不用考虑一个接着一个跳,因为不用算步数,所以就看是否每一个点都被最大跳跃数覆盖到了即可。class Solution {public: bool canJump(vector<int>& nums) { int start=0; bool ans=false; for(int i=0;i<nums.size();++i) { i
2021-12-27 19:14:18
5087
原创 LeetCode 45. 跳跃游戏 II
贪心思路,就是找每一次的最大起跳范围。只要起跳范围覆盖到了终点就完成了。class Solution {public: int jump(vector<int>& nums) { int len=nums.size(); if (len==0) return 0; if (len==1) return 0; int end=0;//对于第一个元素,起跳点和终点相同。 int start=0;
2021-12-26 19:59:55
1672
原创 LeetCode 38. 外观数列
难得不看答案能写出来一个。也是思路比较简单,适合我的智商class Solution {public: string countAndSay(int n) { //动态规划? vector<string> dp(n+1); dp[1]={"1"}; for(int i=2;i<n+1;++i) { int count=1; for(int j=0;j&
2021-12-25 20:30:58
247
原创 LeetCode 29.两数相除
class Solution {public: int quickadd(long a,long b)//不能用除法所以用快速加,和快速幂一个思路 { if(a<b) return 0;//终止条件 long temp_b=b; int temp_beishu=1; while(a>(temp_b+temp_b)) { temp_b+=temp_b;
2021-12-24 22:01:56
2302
原创 LeetCode 50. Pow(x, n)
实现 pow(x, n) ,即计算 x 的 n 次幂函数(即,x^n)。递归+分治。把一个数的n次幂拆解成x^2的n/2次幂。class Solution {public: double quickMul(double x, int N) { if(N==0)//终止条件。 return 1; double y = quickMul(x,N/2); //递归入栈,到最后一次N=1,余数为1,return 1*1*x.
2021-12-23 18:42:50
67
原创 华为机试HJ19 简单错误记录
描述开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。处理:1、 记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条,但是错误计数增加。最后一个斜杠后面的带后缀名的部分(保留最后16位)和行号完全匹配的记录才做算是”相同“的错误记录。2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;3、 输入的文件可能带路径,记录文件名称不能带路径。4、循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现时间,仍以第一次
2021-08-30 18:17:09
153
原创 tensorflow官方demo
from tensorflow.keras.layers import Dense, Flatten, Conv2Dfrom tensorflow.keras import Modelclass MyModel(Model): #继承Model def __init__(self):#定义构造函数,python中函数第一个参数一定是self,self其实就是this super(MyModel,self).__init__#继承默认构造 self.conv1=C
2021-08-15 21:10:18
366
原创 DeepLearning AI (1-4-1)
Building your Deep Neural Network Step by Step#packagesimport numpy as npimport h5pyimport matplotlib.pyplot as pltfrom testCases import *from dnn_utils import sigmoid, sigmoid_backward, relu, relu_backwardfrom public_tests import *%matplotlib inl
2021-07-20 11:52:06
157
原创 DeepLearningAI课程下的python代码
DeepLearningAI课程下的python代码由于没有系统学过python语言,在此积累些课程中涉及到的python代码。About vectorizaiton and broadcasting#单行注释文本用#'''多行注释文本多行注释文本'''#set v is a column vector u=np.zeros((n,1)) #nx1 的0矩阵for i in range(n): #for后面有冒号,#range()为内置函数,这里意思是从0到n u[i]=math.e
2021-07-17 16:14:46
194
原创 数据结构——树
序终于毕业了,也搬好家了,离开了呆了五年的城市。也算是给自己放了个大长假,从今天开始,继续肝数据结构,后续会继续学下学期的课程。树1、树的基本概念(术语)相对树来说:结点的度:一个结点含有的子树个数,说白了就是有几个蛾子,这个结点的度就是多少。树的度:一棵树中,最大的结点的度就是树的度。就是有最多儿子的结点的度==树的度。叶结点:度为零的结点。没儿子的结点就是叶结点,也叫终端结点。 分支结点:有儿子的结点。也叫非终端结点。相对结点来说:孩子结点:一个结点的子树的根节点,这里我不明白为
2021-07-11 11:28:15
621
原创 C++实现循环队列&链队列(详解循环队列队头指空)
C++实现循环队列(详解队头指空)循环队列.hpp#include <iostream>using namespace std;const int MAXSIZE = 1024;template <class T>class CircleQueue{public: CircleQueue() { front = rear = 0; }; void EnQueue(T data); T DeQueue(); T GetFront() { if (rear
2021-05-22 23:52:10
353
原创 c++实现简单顺序栈与链栈
c++实现简单顺序栈与链栈栈作为数据结构线性结构的一部分,栈的实现相对来说比较简便。本质上,顺序栈是顺序表的子集,链栈是链表的子集。在我看来,栈的实现无非是在类中留出更少的接口:只有尾插,尾删,获取top等几种。其稍稍与表的不同是栈是先进后出。即通过一个游动的top指针(顺序栈中用int top来表示数组中的成员位置)来进行对栈的操作。而表中无论是头指针还是尾指针都不动。下面给出实现代码,顺序依次为:顺序栈,链栈和测试。SeqStack.hpp#include <iostream>u
2021-05-22 20:39:19
186
原创 C++实现一元多项式合并同类项(单链表)
#include<iostream>using namespace std;#include"LinkList.hpp"class element{public: double coef; int exp; element(double c = 0, int e = 0) :coef(c), exp(e) {};};class PolyList:public LinkList<element>{public: /*PolyList(element dat
2021-05-21 21:23:05
1157
1
原创 c++实现双向循环链表
c++实现双向循环链表本双向循环链表实现了:无参默认构造:通过尾插法添加结点;有参默认构造:传入数组和数组长度;删除操作;按位查找操作;按值查找操作;链表长度内的插入操作;尾插法;输出链表;#include <iostream>using namespace std;template<class T>class Node{public: T data; Node<T>* prior; Node<T>* next;};
2021-05-17 23:43:30
243
原创 c++实现单向循环链表
#include<iostream>using namespace std;template <class T>class Node{public: T data; Node<T>* next;};template <class T>class CLinkList{public: CLinkList(); ~CLinkList(); int getLength() { return this->length; }; v
2021-05-16 18:42:40
427
原创 C++实现单链表
单链表的C++实现最近在学习数据结构的链表部分,发现大多数网上写的单链表多多少少都有些瑕疵,并且解释不够清晰,对于初学者很不友好。更有甚者C和C++代码混用,对于只学过C++的同学看起来很费劲。虽然这里属于数据结构的基础知识,但是还是建议小白对C++基本的语法能够了解,并且知道单链表的构造,要不然每一句的解释敲的再详细也看不懂。下面是代码和相应解释:#include <iostream>using namespace std;template <class T>//建
2021-05-14 23:08:12
142
原创 数据结构笔记(C++实现)
数据结构笔记(大话数据结构)**序**1、数据结构绪论基本术语2、算法2.1、算法的特性2.2、算法的设计要求序这是我的第一篇在网络上记载的笔记,实是记录在学习过程中的一些心得体会。毕竟逐渐的发现学习的过程中没有记录,即使当时认真学过,一段时间之后就会变成过眼云烟。本科学了几年机械,从无感到热爱再到这个专业成为别人口中的笑柄。回头想想,其实错不在某个专业学什么,也不在这个专业下的学生,只是风向不同而已。在此之前,已经学习过吴恩达的ml和黑马的c++,虽然课是听完了,但也就大致摸索到个概念而已。并不是说这
2021-05-13 14:25:10
536
空空如也
string subscript out of range
2021-05-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人