自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 数据结构复习

文章目录数据结构链表算法题面试题/知识点数据结构链表算法题 2. 两数相加 19. 删除链表的倒数第 N 个结点 21. 合并两个有序链表 23. 合并K个升序链表 114. 二叉树展开为链表 141. 环形链表 142. 环形链表 II 146. LRU缓存机制 148. 排序链表 160. 相交链表 206. 反转链表 234. 回文链表面试题/知识点...

2021-08-11 21:13:29 146

原创 动态规划刷题笔记

动态规划刷题笔记(持续更新)动规原理解法步骤练习目录Leetcode 322.零钱兑换动规原理学习/参考视频:【动态规划专题班】ACM总冠军、清华+斯坦福大神带你入门动态规划算法解法步骤1、确定状态确定最后一步化成子问题2、推出转移方程3、判断初始条件和边界条件4、确定计算顺序练习目录Leetcode 322.零钱兑换题目描述:给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金

2021-03-21 02:00:22 207

原创 Base64在线转换工具

(草稿)为什么做这个项目?(项目背景)在计算机中一个字节共有256种,即ascii码表,而ascii码的128~255之间的值是不可见字符,对于一些只支持可见字符的协议,比如邮件传输协议(SMTP)只支持可见的ASCII字符的传递,如果要传输二进制文件,比如:图片、视频是无法实现的,因此就有了base64编码格式,Base64编码格式对于所有二进制格式的数据,都可以转化为可显示的字符。在网络上交换数据时,比如说从A地传递到B地,往往要经过多个路由设备,由于不同的设备对字符的处理方式有一些不同,这样那

2021-01-31 16:24:49 15076 6

原创 「C++」模板详解

文章目录模板引言模板基本概念什么是模板?模板分类函数模板函数模板概念函数模板使用方式函数模板实例化函数参数的匹配原则类模板类模板基本概念类模板使用方式类模板实例化模板引言假如现在需要实现一个交换整数的函数,很简单就能实现,但是如果没有说交换类型,那么可能需要写各种类型的重载,函数重载虽然可以实现,但是这么做很麻烦,函数的复用性很低,且代码的可维护性比较低,一个出错可能让所有重载都错。void Swap(int& left, int& right) { int temp =

2020-11-19 20:49:14 272

原创 「Leetcode」876.链表的中间节点

题目描述给定一个带有头结点 head 的非空单链表,返回链表的中间结点。如果有两个中间结点,则返回第二个中间结点。示例 1:输入:[1,2,3,4,5] 输出:此列表中的结点 3 (序列化形式:[3,4,5]) 返回的结点值为 3 。(测评系统对该结点序列化表述是 [3,4,5])。 注意,我们返回了一个 ListNode 类型的对象 ans,这样: ans.val =3, ans....

2020-03-11 17:28:44 184

原创 「Leetcode」面试题22.链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.使用语言:C语言思路解析...

2020-03-11 15:55:51 463

原创 「Leetcode」237.删除链表中的节点

题目描述请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。现有一个链表 – head = [4,5,1,9],它可以表示为:示例 1:输入: head = [4,5,1,9], node = 5输出: [4,1,9] 解释: 给定你链表中值为 5的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例...

2020-03-10 22:20:27 231

原创 「Leetcode」206.反转链表

题目描述反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL使用语言:C语言思路解析我最开始想到的方法是,将原链表从末到首每个结点数据依次存储起来,创建一个新链表,再根据存储的数据依次创建结点,最后返回新链表,这么做实在是麻烦,使用下述方法:创建三个指针p...

2020-03-10 22:02:13 186

原创 「Leetcode」203.移除链表元素

题目描述删除链表中等于给定值 val 的所有节点。示例:输入: 1->2->6->3->4->5->6, val = 6输出: 1->2->3->4->5使用语言:C语言思路解析给两个指针cur和prev,prev是在cur前面的指针找到链表中节点val值和输入val值相等的节点,若第一个节点就是需要删除的则直接让头...

2020-03-09 19:39:01 186 2

原创 指针空值nullptr(C++11)

本篇博客会写C++11标准的中的一个新特性nullptr,并解释它的使用方法。指针空值nullptrC++98中的指针空值在我们平时声明一个变量时,一般会给变量一个初始值,例如:void TestPtr(){ int* p1=NULL; int* p2=0;}这个NULL实际上就是一个宏,在传统的C头文件(stddef.h)中:#ifndef NULL#ifdef __...

2019-12-05 19:53:25 1043 1

原创 基于范围的for循环(C++11)

本篇博客会写C++11标准的中的一个新特性范围for,并解释它的使用方法。基于范围的for循环范围for介绍那么什么是范围for呢?在使用早期C++标准的遍历一个数组,我们会使用这段代码:void TestFor(){ int array[] = { 1, 2, 3, 4, 5 }; for (int i = 0; i < sizeof(array) / sizeo...

2019-12-04 21:10:03 1072

转载 究竟什么是迭代?

最近读了一篇我觉得写的特别好的一篇文章,受益匪浅来源:简书作者:韩同志最近几年有一个词,频繁的出现,很多人都把它挂在嘴边,甚至它变的很时髦,这个词叫——迭代 迭代,这个词我以前是没听过(学编程的童鞋可能很早就知道它),现在回想一下,我觉得这个词应该是在智能手机出现后,才被吃瓜群众广泛传播和应用的。有一个词和“迭代”意思比较接近,叫“升级”,这个词我就很熟悉,也非常好理解。比如,Win...

2019-12-04 20:50:18 7712 5

原创 auto关键字(C++11)

本篇博客会写C++11标准的中的一个新特性auto,并解释它的使用方法。auto关键字auto介绍auto简介:在C++11中auto作为一个新的类型指示符来指示编译器,auto声明的变量必须是由编译器在编译时推导而得。说简单点,auto相当于一个自动推导。而在早期的C/C++里auto的含义是:使用auto修饰的变量,是具有自动存储器的局部变量。int TestAuto(){ ...

2019-12-04 20:17:55 479

原创 「C++」类与对象1

类的引入我们都知道C语言是一门面向过程语言,而C++是一门面向对象的语言,那么何为面向过程、面向对象呢?面向过程就是关注的是过程,分析求解问题的步骤,通过调用函数逐步解决问题,而面向对象关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。在C语言中我们用关键字struct来定义结构体,结构体只能定义变量,那我们要定义函数怎么办呢,在C++中结构体内不仅可以定义变量也可以定义函数...

2019-11-20 20:03:51 141

原创 「C++」内联函数

内联函数概念以inline修饰的函数叫做内联函数,在编译C++时编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数提升程序运行的效率。是不是感觉和宏很像,不过宏既可以定义函数也能定义常量,顺便提一下宏的优缺点优点:1.增强代码的复用性2.提高性能缺点:1.不方便调试宏(预编译阶段就进行了转换)2.导致代码的可读性变差,可维护性差,容易误用3.没有类型安全性的检查...

2019-11-19 19:54:44 180

原创 「习题」实现一个函数,可以左旋字符串中的k个字符

使用语言C语言题目描述实现一个函数,可以左旋字符串中的k个字符。例如:ABCD左旋一个字符得到BCDAABCD左旋两个字符得到CDAB思路解析+代码实现(多思路)思路一:常规思路很简单,很容易想出来,以左旋一个字符为例,创建一个变量tmp将字符串的第一个字符赋给tmp,然后将字符串所有的字符往前移一位比如移动之前是ABCD,移动之后就是BCDD,因为最后一个字符是没有后...

2019-11-16 22:31:01 526

原创 「C++」引用详解

引用的概念引用不是定义了一个新变量,而是给已经存在的变量取一个别名,编译器不会为引用变量开辟空间,它和它引用的变量共用一块内存空间。使用方法如下:int main(){ int a=10; int &b=a;//定义引用类型 printf("%d\n",a); printf("%d\n",b); printf("%p\n",&a); printf("%p\...

2019-11-13 17:52:26 183

原创 「C++」函数重载

函数重载概念函数重载是函数的一种特殊情况,C++允许在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数、类型、顺序)必须不同,常用来处理实现功能类似而数据类型不同的问题就像在自然语言中一个词有多个意思,需要根据上下文来判断该词的真实含义,既该词被重载了,在C++中编译器也会根据情况来调用同名函数,可以看下面这个实例int Add(int a,int b){re...

2019-11-12 17:51:25 184

原创 「C++」缺省参数

C++缺省参数就像是给函数的参数配了一个备胎缺省参数概念缺省参数是声明或定义函数时为函数的参数指定的一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则使用指定的实参。可以用下面这一段代码清楚解释:void TestFunc(int a = 0){ cout<<a<<endl;}int mian(){ TestFunc();//没有传参时,...

2019-11-06 16:24:32 161

原创 「C++」命名空间

命名空间概念在初学C++时,会写到的第一段代码肯定是这个:#include<iostream>using namespace std;int main(){ cout<<"hello world"<<endl; return 0;}我相信大多数初学者还是不知道前两行代码的意思,其实一开始我也不知道,老师说这样写就这样写,记住就行了,后...

2019-11-05 18:11:56 320

原创 「C++」初识

序言2019下半年,我开始了C++的系统化学习之旅。毋庸置疑,在学习一块知识时,尤其是比较难的知识时,需要构建自己的知识体系,所以在学习C++的过程中我也在刻意地去做到这点,并写下博客记录学习过程。对C++的一些认识C++98 C++标准第一个版本,引入了STL我目前认知较浅,我所认知的C++更像是人们为了解决C语言无法解决或者不方便解决的问题而创造出来的的语言。C++其实是...

2019-11-05 16:49:50 127

原创 「数据结构_初阶」时间、空间复杂度

在了解时间复杂度和空间复杂度之前要先搞清楚算法效率,算法效率分为两种一个是时间效率也称时间复杂度,另一个是空间效率也称空间复杂度。很显然,时间复杂度衡量一个算法用时多少即它的运行速度,空间复杂度衡量的是算法需要的空间,这两种复杂度都采用大O的渐进表示法来表示。随着计算机的发展,计算机的存储容量已经达到了很高的一个程度,现在基本上考虑的都是一个算法的时间复杂度,空间复杂度已经不再是一个需要特别关注...

2019-07-30 15:50:26 183

原创 「数据结构_初阶」序

大一结束,暑假计划利用两周时间对数据结构初阶进行了较深入的学习,学校下学期才开这门课程,算是提前进行了预习,计划的学习节奏大致为每天上午9:30~12:30系统学习知识,下午2:30到5:30做题+思考。到今天截止数据结构初阶的内容我已经全部学习完成用时刚好两周(7.16~7.29)。打算开始总结这两周学到的东西,加强记忆同时加深对数据结构的理解,我的学习顺序是从时间、空间复杂度到排序,这次的复...

2019-07-29 16:06:25 183

原创 「Leetcode」101.对称二叉树

使用语言:C语言题目思路:第一层的根节点可以不用判断每一次递归都将该树拆分为左树和右树先判断左树和右树根节点是否一样,再判断左树和右树是否对称判断两棵树是否对称可以使用之前的思路「Leetcode」100.相同的树图片描述:代码实现:/** * Definition for a binary tree node. * struct TreeNode { * in...

2019-07-25 17:23:29 137

原创 「Leetcode」94.二叉树的中序遍历

语言:C语言思路:此题思路与我之前做的二叉树的前序遍历基本类似,唯一不同的是二者的顺序是不同的,中序遍历的顺序为左子树->根->右子树,但整体解题方法一样,可以参考我上一题的思路详解,链接放在下面了。「Leetcode」144.二叉树的前序遍历代码如下/** * Definition for a binary tree node. * struct TreeNode { ...

2019-07-23 17:12:10 128

原创 「Leetcode」144.二叉树的前序遍历

语言:C语言思路:前序遍历的顺序为根->左子树->右子树(NLR),首先需要计算需要开辟多大的空间,但是空间大小不能随便开辟,建立一个TreeSize()函数计算树的节点数量,有多少节点开辟多大的空间,然后建立一个函数_preorderTraversal(),使用前序遍历的顺序将每个节点依次放入数组,最后输出该数组即为题目答案。思路脑图如下图所示代码如下int TreeSize...

2019-07-23 15:49:40 148

原创 「Leetcode」100.相同的树

语言:C语言思路:先判断特殊情况>然后依次比较每个节点>两个数在比较中完全重合,即为相同的树。如图所示,如果每一步判断都是完全相同(图中步骤我没有画完),此时两颗树就是相同的树如果两颗树不相同,如下图所示,在步骤②就会被判false总的来说这题思路总结为:同步来看代码bool isSameTree(struct TreeNode* p, struct TreeNode...

2019-07-22 16:42:10 229

原创 「Leetcode」104.二叉树的最大深度

解题语言:C语言思路的大致框架是算出二叉树根节点左右子树的深度,然后相比,较大的一方即为该二叉树的最大深度(要记得加1,加上根节点那一层)。先看我最初的解法int maxDepth(struct TreeNode* root){ if(root==NULL) { return 0; } return maxDepth(root->l...

2019-07-22 15:57:34 152

原创 「游戏」编写2048小游戏

我们可以在微信小程序搜索2048,并玩上几把,体验几盘游戏后,不难发现游戏的逻辑其实很简单。我把想到的大致逻辑画出思维导图,然后再用编程一步一步地去实现它,当然,也参考了他人优秀的逻辑来优化自己的代码。 1.菜单菜单里面信息只有三条:开始游戏、退出游戏、操作说明。在main函数里使用switch(),列出三个选项分别对应上述菜单的三个信息,供玩家输入。void menu()//菜单{...

2019-05-16 14:17:46 856

原创 「习题」将数组A中的内容和数组B中的内容进行交换(数组一样大)

看到这题首先想到的原型就是交换两个变量的值,常规思路应该就是创建一个临时变量,然后经过三次交换,最后使两变量值交换。然后这题也是采用相同的思路,利用循环来实现数组里多次变量的交换。#include <stdio.h>int main(){ int arr1[] = { 1, 3, 5, 7, 9 };//随便创建的数组和变量 int arr2[] = { 3, 4, 5, 6...

2019-05-03 14:12:05 230

原创 「游戏」关于编写扫雷的思路总结

整理出的思路脑图game.h#define _CRT_SECURE_NO_WARNINGS 1 #ifndef __GAME_H__#define __GAME_H__ #include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h> #defi...

2019-03-24 20:38:11 1246

原创 「习题」Code_3_15

1.在屏幕上输出以下图案:#define _CRT_SECURE_NO_WARNINGS 1#include&lt;stdio.h&gt;#include&lt;stdlib.h&gt;int main(){ int line = 13; int i = 0; int j = 0; int k = 0; //打印上半部分(正三角) for (i = 0; i &lt; li...

2019-03-15 21:34:18 222

原创 「小技巧」关于交换两个数字的值

法一:使用创建一个新的临时变量作为中转,从而使两个变量值交换#include&lt;stdio.h&gt;int main(){ int a = 10; int b = 20; int tmp = 0; printf("a = %d b = %d\n", a, b); tmp = a; a = b; b = tmp; printf("a = %d b = %d\n", a,...

2019-03-14 12:38:27 316

原创 「3_8Code修订」输出乘法口诀表

输出乘法口诀表原代码#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int main(){ int i, j, k; int n = 9; for (i = 1;i &lt;= n;i++) { for (j = 1;j &lt;= i;j++) { k = i * j; printf("%d*%d=%d\n"...

2019-03-14 12:28:37 275

原创 「3_8Code优化」打印100到200的素数

打印100到200的素数原代码#include &amp;lt;stdio.h&amp;gt;#include &amp;lt;stdlib.h&amp;gt;int main(){ int i = 0; for (i = 100;i &amp;lt;= 200;i++) { int j = 0; for (j = 2;j &amp;lt;= i;j++) { if (i%j == 0) { b...

2019-03-14 12:19:40 280

原创 「习题」3_8Code

习题一//打印100~200之间的素数#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;int main(){ int i = 0; for (i = 100;i &lt;= 200;i++) { int j = 0; for (j = 2;j &lt;= i;j++) { if (i%j == 0) { ...

2019-03-09 23:40:30 213

原创 「感想杂谈」立个志向

作为一名网络工程专业大一的学生,已经在大学里度过了半年多的时光,从一开始的完全不理解计算机到现在渐渐热爱这门专业,虽说过得有点浑浑噩噩不知方向,但还是对这门学科以及以后的发展有了一点点的认识,也开始有了一点点方向,希望能朝着这个方向继续努力学习吧。本身对什么奖学金,社交活动,部门活动都没兴趣,只想做自己想做的事情,大学就学好知识,热爱自己的热爱,三年后再见。大一的生活还是很简单没有很大压力的,...

2019-03-09 23:30:00 331 3

空空如也

空空如也

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

TA关注的人

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