数据结构算法笔记#1.2:栈的应用(1)
学完了栈和队列,现在我们来聊聊它们究竟有什么用。
这次我们来聊聊应用到栈的三种算法:括号匹配算法、走迷宫算法和算术表达式求值算法,由于第三者较为复杂,故下次再聊,本次先聊聊前两种算法。
括号匹配算法
问题描述
给出一段仅包含括号的表达式,要求不考虑嵌套顺序,判断表达式是否合法。
如:( [ { } ] ) 与 ( ) [ ] { [ ] } 都属于合法表达式;而 { ( } ) 以及 [ ( ] { 就属于非法表达式。
问题分析
面对这种问题,首先想到的是对每个字符依次处理:读到左括号,就可以先放着不管。只有当读到右括号时,才需分析是否有正确的左括号与之配对。
既然题目要求中不考虑嵌套,那我们只需考虑在该括号左边第一个未被处理的左括号是否与之配对就行。
例:读入" { ( [ ",接着再读入 ‘]’ ,就只需考虑 ‘[’ 是否与其匹配;再读入 ‘)’ ,由于 ‘[’ 已被处理,所以跳过不管,只需考虑 ‘(’ 即可。
对于程序来说,自然无法自己识别哪些被处理过哪些没被处理过。需要我们手动帮助它"识别"。这里我们很容易想到,已经处理过的括 ...
数据结构算法笔记#1.1:栈与队列
熟悉我的人都知道,我上大学前基本没有接触过编程,少有的几次也就是小学电脑课的scratch与小海龟和中学信息技术课的vb了。
然而当时接触的都只是基础语法,做一点在大学里几节课就能学会的东西。
所以,数据结构对于我来说是个全新的概念。我一直坚信:好记性不如烂笔头。只有写下来,才能促进我不断地回顾。
于是,这个系列诞生了…
我已经上了三周的课了,前几次老师讲了绪论、顺序表与链表。这些内容早在c和cpp课上被讲过多次,遂不再记录。
栈(Stack)
栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
结合之前学过的知识,很容易想到用顺序表或链表来实现它。
栈的顺序表实现
容易想到,我们需要先创建一个顺序表。然而,这个表要多长呢?
如果设计得过长,会有空间的浪费;
如果设计得过短,加入新元素时难免会溢出。这时候就需 ...
从零开始的个人博客#4:使用Vercel托管博客
大家可能都已经遇到了无法访问xxx.github.io的窘境。
自己好不容易写好的博客,在墙内却无法访问,属实有点尴尬。
当然最简单的方法就是租个域名租个服务器,解决一切问题。
当然,我们本着不花钱白嫖的态度,总要找到免费更适合的方法。
Vercel
Vercel是一个代码托管平台,可以直接从GitHub中import仓库,并且实时同步。
最重要的是,Vercel在台湾有服务器,我们可以在墙内直接访问。
并且操作十分的简单。
首先来到Vercel官网,直接用GitHub账号登录。
这边注意一下,如果GitHub绑定的邮箱是QQ邮箱,是无法注册的。我们需要进入GitHub→Settings→Emails中添加一个非QQ邮箱,然后设置为Primary,以上操作不会影响GitHub的正常使用。
绑定了非QQ邮箱后,等待一会,就可以正常登录Vercel啦。
这时我们来到主页,点击Import Project,选择Import Git Repository,然后输入GitHub中的仓库地址。
接着一路什么都不用管,一直continue,最后再点击deploy。
等待部署完成后。点击Visi ...
从零开始的个人博客#3:个性化
Hexo生成的默认网站,虽然算不上丑,也能满足日常的写作和发布需要。
但追求个性化的我肯定不满足于此。
这次我们来聊一聊网站的个性化。
这次我们涉及的指令部分并不多,不用再苦恼于记那些生涩的指令了。只需要一点英文基础就行。
这一次不用进入cmd了,直接在文件资源管理器中打开博客的文件夹。
看到里面有个叫 _config.yml 的文件了吧?双击打开它。
基本设置
首先来看第一部分:
12345678# Sitetitle: 网站的标题subtitle: 网站的副标题description: 网站的描述keywords: 网站的关键词,暂时可以不填author: 作者,你的名字language: 语言,可以改成zh-CNtimezone: 时区,可以改成Asia/Shanghai
记得冒号后有一个空格喔!
然后中间的部分可以先不用管,拉到最下面:
1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme: landscape
显然,这个部分可以让我们自选需要的 ...
从零开始的个人博客#2:第一篇文章
有了博客,也是时候写文章上传了。
我们这次来聊一聊如何上传自己的文章。
Markdown
Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。
由于Markdown的轻量化、易读易写特性,并且对于图片,图表、数学式都有支持,目前许多网站都广泛使用Markdown来撰写帮助文档或是用于论坛上发表消息。
Hexo的文章默认就是由markdown语法来编写的。
Markdown的教程在网上随处可见,我就不在此赘述。你大可自己了解。
这边我推荐一款Markdown的编辑器,名为Typora,对于新手来说交互十分友好,易于上手。
可惜它并不是一个开源软件,不知道后续会发展为什么样子,但目前还是挺推荐使用的。
编写文章
基础
我们首先打开博客文件夹,找到**_config.yml**,双击打开,然后找到:
1post_asset_folder: false
这行,将false改为true,这一行的含义是在创建文章时同时创建一个资源文件夹,我们如果要在文章中加入图片就需要这一个文件夹。
这时我们再回到cmd,同样地,cd到博客的目录。输入命令:
1hexo ...
从零开始的个人博客#1:第一个页面
事情要从我朋友看到我的个人博客说起。
他十分羡慕,并且也想自己做一个。
可他比较笨,学不会,就想让我写一个教程。
行呗,正好当作复习。
准备
我用的是Hexo+GitHub Page搭建的个人博客。所以我们先从GitHub开始。
GitHub
首先进入GitHub,注册一个账号。
接着点击右上角的小加号,选择New repository。
接着在仓库名这里我们输入你的id.github.io。接着随便写一个description,然后点击最下方的create repository,就可以啦。
这时会跳转到这样一个页面,我们把那行HTTPS网址记录下来,一会用得到。
2020.11.22更新
相比起HTTPS,SSH Key更为好用,可以免去每次提交时重复输入账号密码的过程。所以可以选择记录下SSH Key。
接下来我们来准备Hexo
Hexo
首先我们需要先下载git和node.js。
安装完后进入cmd,分别输入:
123git versionnpm -vnode -v
这时如果和我一样能分别显示各自的版本号,那恭喜你,成功安装了git和node.js。
我们先进入 ...
无法正常访问GitHub相关网站的解决办法
不知道从什么时候起,越来越多人开始无法正常访问GitHub或GitHub Page。以至于身边朋友进不来我的个人站…
有人说是DNS被污染了,也有人说是被GFW了…
谁知道呢,还好方法总比困难多。它有它的问题,我有我的解决方法。
(什么? 你说上不了GitHub Page要怎么看到我这篇文章? 朋友,你需要科学的力量)
改DNS
DNS是什么
现在大多应该都是win10用户吧。那只需打开
控制面板->网络与共享中心->找到自己正在使用的网络
接着进入属性->网络
在这里会看到有ipv6与ipv4两种协议,对于ipv6和ipv4有分别的DNS可以使用。
进入属性,选择使用下面的DNS服务器地址。
我选用了百度的ipv6地址:2400:da00::6666。
对于ipv4,我推荐使用国内通用的114.114.114.114与谷歌的8.8.8.8。
修改完之后,一路退出,断开网络重连,试试看,是不是能正常访问网站了?
什么?还是无法访问?那好吧,我们可以选择第二种方法:
改HOSTS
hosts的功能和DNS类似,只不过是静态存储在我们的个人计算机之中的。
当访问网 ...
C#实验笔记#1:第一个程序
我本对分享毫无兴趣,也从未有过编写教程的想法。
然而这个学期的C#课程的教授要求我以教程的形式撰写实验报告。不出所料,写完后总有许多同学欲向我借去"借鉴"。那么多人,一个个发属实有些繁琐,索性丢到 自己的个人站上让大家自由借阅。
于是就有了这一系列笔记。随便写写,从心所欲,谨慎阅读。
C# 是一个现代的、通用的、面向对象的编程语言,它是由微软(Microsoft)开发的,由 Ecma 和 ISO 核准认可的。
C# 是由 Anders Hejlsberg 和他的团队在 .Net 框架开发期间开发的。
C# 是专为公共语言基础结构(CLI)设计的。CLI 由可执行代码和运行时环境组成,允许在不同的计算机平台和体系结构上使用各种高级语言。
配置开发环境
在C#的学习过程中,我们一般使用Visual Studio或者VS Code来编写,前者体积较大,但功能较为完善,配置也较容易;后者虽然轻量,但配置环境对于初学者来说较为困难。所以笔者在此使用了Visual Studio来进行编写。
下载VS
首先前往VS官网进行下载。
然后下载完安装包后进行安装,一路点NE ...
LGA:此生最佳游戏评选
最佳游戏
魔兽争霸3(WarCraft3)
魔兽争霸3 ,从某种意义上来讲,是一部陪伴着我从小到大的作品。从小学三年级第一次接触魔兽3,到初中上手DotA1,再到中考前夕偷溜参加魔兽电影首映日,直到后来接触DOTA2…魔兽的身影一直在我的身边挥之不去,作为暴雪最大的IP,作为陪伴我超过十年的朋友,最佳游戏当之无愧。
提名游戏 :Minecraft,无主之地系列,传送门系列,植物大战僵尸,看门狗2。
最佳电竞游戏
DotA&&DOTA2
还用问吗,谁不知道我最爱 DotA ?
提名游戏 :魔兽争霸3,炉石传说。
最佳角色扮演(RPG)游戏
口袋妖怪(Pokemon)系列
口袋妖怪 ,作为回合制游戏的里程碑级作品,至今已有近三十年的历史,从最初GB上的红绿蓝到现在NS的剑盾系列,几乎每一代人都或多或少听说过口袋妖怪的大名,皮卡丘杰尼龟蒜头王八等代表性角色的影响力更是不必多言。它优秀的剧情与平衡性注定了它的成功,以至于早期国产页游热衷于借鉴这种模式。与我而言,更是从小接触到大的系列,其游戏-动画-周边的整个IP系统的影响力使它在游戏史上有着不可撼动的地位。 ...
文章目录
----