自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++串的模式匹配(BF,KMP详解)

C++串的模式匹配 在数据结构的学习过程中,继顺序表,链表,队列,栈之后的一个部分便是串。本质上串也是线性表的一种,其当然可以分为顺序存储结构与链式存储结构。它的一些接口也已经由STL中的<string.h>配备完全,需要时直接调用即可。 本文将主要介绍串的模式匹配部分,包括概念,Brute Force(BF)和KMP共三部分。因为我在学习和用C++实现KMP时,发现了诸多问题。所以本文将着重详解C++实现的KMP算法(包括生成next表)。 概念 所谓串的模式匹配,用白话讲,就是在主串(串S)

2021-05-28 16:35:02 3975

原创 剑指 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 580

原创 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 208

原创 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 5136

原创 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 1728

原创 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 269

原创 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 2346

原创 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 99

原创 华为机试HJ19 简单错误记录

描述 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 处理: 1、 记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条,但是错误计数增加。最后一个斜杠后面的带后缀名的部分(保留最后16位)和行号完全匹配的记录才做算是”相同“的错误记录。 2、 超过16个字符的文件名称,只记录文件的最后有效16个字符; 3、 输入的文件可能带路径,记录文件名称不能带路径。 4、循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现时间,仍以第一次

2021-08-30 18:17:09 175

原创 tensorflow官方demo

from tensorflow.keras.layers import Dense, Flatten, Conv2D from tensorflow.keras import Model class MyModel(Model): #继承Model def __init__(self):#定义构造函数,python中函数第一个参数一定是self,self其实就是this super(MyModel,self).__init__#继承默认构造 self.conv1=C

2021-08-15 21:10:18 431

原创 DeepLearning AI (1-4-1)

Building your Deep Neural Network Step by Step #packages import numpy as np import h5py import matplotlib.pyplot as plt from testCases import * from dnn_utils import sigmoid, sigmoid_backward, relu, relu_backward from public_tests import * %matplotlib inl

2021-07-20 11:52:06 196

原创 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 238

原创 数据结构——树

序 终于毕业了,也搬好家了,离开了呆了五年的城市。也算是给自己放了个大长假,从今天开始,继续肝数据结构,后续会继续学下学期的课程。 树 1、树的基本概念(术语) 相对树来说: 结点的度:一个结点含有的子树个数,说白了就是有几个蛾子,这个结点的度就是多少。 树的度:一棵树中,最大的结点的度就是树的度。就是有最多儿子的结点的度==树的度。 叶结点:度为零的结点。没儿子的结点就是叶结点,也叫终端结点。 分支结点:有儿子的结点。也叫非终端结点。 相对结点来说: 孩子结点:一个结点的子树的根节点,这里我不明白为

2021-07-11 11:28:15 725

原创 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 391

原创 c++实现简单顺序栈与链栈

c++实现简单顺序栈与链栈 栈作为数据结构线性结构的一部分,栈的实现相对来说比较简便。本质上,顺序栈是顺序表的子集,链栈是链表的子集。在我看来,栈的实现无非是在类中留出更少的接口:只有尾插,尾删,获取top等几种。其稍稍与表的不同是栈是先进后出。即通过一个游动的top指针(顺序栈中用int top来表示数组中的成员位置)来进行对栈的操作。而表中无论是头指针还是尾指针都不动。下面给出实现代码,顺序依次为:顺序栈,链栈和测试。 SeqStack.hpp #include <iostream> u

2021-05-22 20:39:19 235

原创 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 1380 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 294

原创 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 476

原创 C++实现单链表

单链表的C++实现 最近在学习数据结构的链表部分,发现大多数网上写的单链表多多少少都有些瑕疵,并且解释不够清晰,对于初学者很不友好。更有甚者C和C++代码混用,对于只学过C++的同学看起来很费劲。虽然这里属于数据结构的基础知识,但是还是建议小白对C++基本的语法能够了解,并且知道单链表的构造,要不然每一句的解释敲的再详细也看不懂。 下面是代码和相应解释: #include <iostream> using namespace std; template <class T>//建

2021-05-14 23:08:12 209

原创 数据结构笔记(C++实现)

数据结构笔记(大话数据结构)**序**1、数据结构绪论基本术语2、算法2.1、算法的特性2.2、算法的设计要求 序 这是我的第一篇在网络上记载的笔记,实是记录在学习过程中的一些心得体会。毕竟逐渐的发现学习的过程中没有记录,即使当时认真学过,一段时间之后就会变成过眼云烟。本科学了几年机械,从无感到热爱再到这个专业成为别人口中的笑柄。回头想想,其实错不在某个专业学什么,也不在这个专业下的学生,只是风向不同而已。在此之前,已经学习过吴恩达的ml和黑马的c++,虽然课是听完了,但也就大致摸索到个概念而已。并不是说这

2021-05-13 14:25:10 829

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除