
笔记
风铃奈
加油加油加油呀
展开
-
【圣诞节】三个小圣诞树
目录????第一颗????展示????第二棵????展示????第三棵????展示????第一颗#include <iostream>#include <windows.h>#include <conio.h>using namespace std;int len;struct Dot { int x; int y; char c;}a[10000000];int vis[10000000];char c[5]转载 2021-12-22 17:31:38 · 262 阅读 · 1 评论 -
【链表】带头节点和不带头节点单链表的区别
目录????当链表的结点只包含一个指针域时,叫做单链表????不论带不带头节点,所有的链表都要有个头指针!????带头结点的链表的头指针指向的是头结点,头结点的指针域指向首元结点????不带头结点的头指针直接指向首元结点????初始化????2.带头节点的初始化????不带头节点的初始化????判空条件????带头节点????不带头节点????操作上有区别????带头节点????不带头节点????当链表的结点只包含一个指针域时,叫做单链表?原创 2021-12-11 15:29:14 · 8972 阅读 · 8 评论 -
【笔记】二、八、十、十六进制相互转化,再也不怕(有蓝桥例题)
目录1、二进制转十进制“按权展开求和”2、十进制转二进制“除二取余法”3、二进制转八进制“合三位为八”4、八进制转二进制“分三位为二”5、二进制转十六进制“合四位为十六”6、十六进制转二进制7、十进制转八进制"除八取余法"8、八进制转十进制"按权展开求和”9、十进制转十六进制"除十六取余法”10、十六进制转十进制“按权展开求和”蓝桥练习题例题一十六进制转八进制1、思想2、代码例题二十六进制转十进原创 2021-11-30 19:28:39 · 1635 阅读 · 2 评论 -
【C语言】实现一个通讯录(可排序)
1.目的写一个实用型通讯录,它有如下功能:显示目录void ShowMenu(){ printf("#######################\n"); printf("#1.Add 2.Del 3.Search #\n"); printf("#4.Mod 5.Show 6.Clear #\n"); printf("#7.Sort 0.Exit #\n"); printf("#######################\n"); printf("please sele原创 2021-11-27 22:00:56 · 11466 阅读 · 26 评论 -
【atoi】模拟实现atoi函数,将字符串转化为数字
1.目的编码实现函数atoi(),把一个字符串转化为一个整型数值例如(“12345”转化成12345)2.避坑避免一下几种坑没有考虑到1.字符串有没有正负号问题;2.字符串里夹杂着各种字母或是异常字符的情况;3.考虑字符串转化成int 整型时会不会越界.3.两个解法代码1#include <stdio.h>#include <Windows.h>#include <assert.h>#include <stdlib.h>in原创 2021-11-26 14:57:20 · 685 阅读 · 1 评论 -
【笔记】模拟实现strstr()
模拟实现strstr函数思想模拟strstr函数,主要通过两个while()循环,如图解释代码展示#include <iostream>#include <Windows.h>#include <assert.h>using namespace std;const char *my_strstr(const char *str, const char *sub){ assert(str); assert(sub); const char原创 2021-11-23 20:39:39 · 463 阅读 · 1 评论 -
【笔记】三种方法模拟实现strlen
模拟实现strlen函数方法一字符串++1.用一个while循环,只要字符串没有到’\0’,继续,碰到’\0’,跳出2.每循环一次,len++(len用来记录长度)代码size_t myStrlen(const char *str){ assert(str); int len = 0; while (*str){ str++; len++; } const char *start = str; const char *end = str; return len;}原创 2021-11-22 20:38:37 · 418 阅读 · 1 评论 -
【指针】深度剖析2.0
关于指针的三个例题,有助于更好的理解指针原创 2021-11-16 21:56:50 · 243 阅读 · 1 评论 -
【指针】深度剖析
1.一维数组int a[] = {1,2,3,4};printf("%d\n",sizeof(a));//16 整个数组的大小printf("%d\n",sizeof(a+0));//4 第一个元素的地址printf("%d\n",sizeof(*a));//4 第一个元素printf("%d\n",sizeof(a+1));//4 第二个元素的地址printf("%d\n",sizeof(a[1]));//4 第二个元素printf("%d\n"原创 2021-11-15 22:49:31 · 81 阅读 · 1 评论 -
【函数指针数组】转移表
1.目的刚学了函数指针数组,试试函数指针数组的实际应用,利用它实现一个计算器2.原因对于这个计算器,我们只实现简单的加减乘除,如果没有用函数指针数组的话,会出现很多重复的代码;例如利用函数指针数组可以直接用数组下标去找到对应的函数,以此简化代码3.定义什么叫函数指针数组?我们知道数组是一个存放相同类型数据的存储空间,要把函数的地址存到一个数组中,那这个数组就叫函数数组指针int (*数组名[数组大小])()4.代码具体的计算器实现见代码main..原创 2021-11-13 21:29:11 · 725 阅读 · 0 评论 -
【内存中的存储】浮点型
1.浮点型存储1.浮点数可以被表示成标准科学计数法(二进制)2.科学计数法也能表示成对应的十进制浮点数所以对浮点数的存储,本质是对S,M,E的存储,同样的,对浮点数的读取,本质上是去读S,M,E,然后带入科学计数法公式,算出浮点数浮点数在内存中存储是将放进去的指数+127,读取的时候-127浮点数不能和0比较,因为多个数的值都是0,只能大于小于...原创 2021-11-12 22:14:23 · 220 阅读 · 0 评论 -
有无符号的整型计算
#include <stdio.h>#include <Windows.h>int main(){ int i = -20; unsigned int j = 10; printf("%d\n", i + j); system("pause"); return 0;}计算机是以补码进行计算的(负数原码符号位不变,按位取反,得到补码,正数的补码是他本身)以上题为例i的原码:1000 0000 0000 0000 0000 0000 000...原创 2021-11-10 21:01:09 · 379 阅读 · 1 评论 -
数据整形存储
1.void1.void不能用来定义变量,因为它的大小是不确定的,或是空2.void* 可以用来定义变量,还可以用来赋值,说明void*本身给变量开辟了空间3.但是void*对应的变量不能被直接解引用4.void *非常特殊的应用,就是void *可以用来接收任意类型,常用于接收任意指针2.补码反码1.原码:对应数据的绝对值对应的二进制序列,特殊:有符号数2.反码:符号位不变,其他按位取反(默认有符号负数)3.补码:反码+11.有无符号无符号:原码=反码=补码原创 2021-11-09 22:34:49 · 219 阅读 · 1 评论 -
【实用调试技巧】
1.什么时bug第一次被发现的导致计算机错误的飞蛾,也是第一个计算机恒旭错误2.调试是什么又称除错,是发现和减少计算机程序或电子仪器设备程序错误的一个过程步骤发现程序错误的存在 以隔离,消除等方式对错误进行定位 确认错误产生的原因 提出纠正错误的方法 对程序错误予以改正,重新测试3.debug和release的介绍编译就是生成.exe文件1)Debug称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试(给程序员)2)Release.原创 2021-11-06 17:39:36 · 119 阅读 · 0 评论 -
【剑指offer】14- I. 剪绳子
1.题目描述给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m-1] 。请问 k[0]*k[1]*...*k[m-1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。提示2 <= n <= 58方法:数学分析法算法思想1.设将长度为 n的绳子切为 a 段:n=n1+n2+n3....na,本题原创 2021-11-05 14:05:11 · 89 阅读 · 0 评论 -
【错题整理】
1.指针2.用函数实现逆序一个字符串的内容3.实现2+22+222+2222+22222原创 2021-11-04 17:43:29 · 118 阅读 · 0 评论 -
【扫雷】游戏
一、目的实现一个扫雷游戏二、过程1、游戏框架首先,游戏开始之前,显示游戏菜单Menu()static void Menu(){ printf("#############################\n"); printf("########欢迎来到扫雷游戏#######\n"); printf("#############################\n"); printf("## 1.play 2.exit ##\n"); printf("原创 2021-10-30 17:08:44 · 1783 阅读 · 1 评论 -
【三子棋】游戏
目录目的思想一步一步来,最起码得先分几个模块第一、游戏框架第二、游戏过程第三、具体步骤每一小步汇总起来,得到一个三子棋游戏chess.hchess.cppmain.cpp到此结束啦 目的 写一个三子棋游戏,就是小时候“X”,“O”在一个3*3的格子里,谁先连成一条线,谁就赢 思想 一步一步来,最起码得先分几个模块第一、游戏框架游戏,需要有一个选择界面,是玩游戏,还是退出游戏,用函数Menu()void Me原创 2021-10-30 01:07:43 · 1627 阅读 · 1 评论 -
【剑指offer】斐波那契数列
题目描述写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,F(1)= 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。方法一:动态规划算法思想1.特殊情况:当n=0/1时,返...原创 2021-10-28 17:54:06 · 83 阅读 · 0 评论 -
【蓝桥杯】第十二届C++B组真题解析
填空1.空间256MB的内存开一个数组,数组的每个元素都是32位二进制整数,不考虑程序占用的空间和维护内存需要的辅助空间,问256MB的空间可以存储多少个32位二进制整数代码#include <iostream>using namespace std;int main(){cout<<256*1024*1024/4<<endl;return 0;}答案617088642.卡片卡片上数字都是0到9从1开始拼正整数原创 2021-10-24 21:36:52 · 1998 阅读 · 0 评论 -
【剑指 Offer】 25. 合并两个排序的链表
1、题目描述输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的2、算法思想1、首先新创一个链表,用来存储两个链表合并后的样子2、再创建一个新的指针指向新链表3、判断两个链表的大小,如果l1大,把l2放入新链表,令l2=l2->next;相反的,如果l2大于或等于l1,令l1=l1->next4、放入较小的数据后,利用指针,指向新链表的下一个5、当两个链表不为空的时候,一直循环3.代码class Solution {public原创 2021-10-22 22:32:18 · 84 阅读 · 0 评论 -
【力扣】441.排列硬币
题目描述你总共有n枚硬币,并计划将它们按阶梯状排列。对于一个由 k 行组成的阶梯,其第 i 行必须正好有 i 枚硬币。阶梯的最后一行 可能 是不完整的。给你一个数字n ,计算并返回可形成 完整阶梯行 的总行数方法一:傻瓜算法思想1.既然要找到行数,如果n为1,就返回1,如果n不为12.for循环,i从0开始,用sum累加,如果sum>n,就返回i-1;3.如果sum=n就返回i代码class Solution {public: int ar...原创 2021-10-11 13:24:05 · 111 阅读 · 0 评论 -
【力扣187】重复的DNA序列
题目表述所有 DNA 都由一系列缩写为 'A','C','G' 和 'T' 的核苷酸组成,例如:"ACGAATTCCG"。在研究 DNA 时,识别 DNA 中的重复序列有时会对研究非常有帮助。编写一个函数来找出所有目标子串,目标子串的长度为 10,且在 DNA 字符串 s 中出现次数超过一次。补充:哈希表知识点unordered_map 常用参数参数 含义 <key,T> 前 2 个参数分别用于确定键值对中键和值的类型,也就是存储键值对的类型。 Has原创 2021-10-09 20:09:23 · 160 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
题目描述把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组[3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。方法一:自己瞎想的算法思想1.既然是一个递增数组的旋转,那我是不是只要判断出一个数据比前面一个数据小,我就可以当他是被旋转过来最小的那个数2.当数组的长度为1的时候,直接返回数组[0]3.方循环一遍并没有发现数组[i+1]>[i],那就直接返回数组.原创 2021-10-03 22:22:54 · 74 阅读 · 0 评论 -
2021-10-03剑指 Offer 04. 二维数组中的查找
题目描述在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。方法一:暴力傻瓜算法思想1.既然暴力求解,不考虑时间空间复杂度的话,就两层for循环2.二维数组中的每一个数据和target比较,相等返回true,否则返回false代码class Solution {public: bool findNumberIn2DArray(原创 2021-10-03 21:35:06 · 83 阅读 · 0 评论 -
Leecode877石子游戏
1.auto:在C++11标准的语法中,auto被定义为自动推断变量的类型。例如: 1 autox=5.2;//这里的x被auto推断为double类型 1 2 3 4 5 6 map<int,int>m; for(autoit=m.begin();//这里it被auto推断为map<int,int>::iterator类型 it!=m.end()..原创 2021-10-02 11:09:57 · 240 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
题目描述定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。方法:迭代算法思想1.首先,想反转链表,即将链表之间的箭头指向全部逆反过来2.需要考虑两个问题:(1)将下一个节点的箭头指向前一个节点,那下一个节点怎么存储 (2)由于节点没有引用其前一个节点,必须事先存储其前一个节点。代码class Solution {public: ListNode* reverseLis...原创 2021-10-02 10:51:45 · 73 阅读 · 0 评论 -
2021-09-28剑指 Offer 03. 数组中重复的数字
题目描述在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。方法:暴力傻瓜算法思想1.刚开始想的比较简单,只需要列出一个重复的数字就行了,那直接两层循环,发现重复的数字以后直接break,return nums[i];好像就解决了代码class Solution {public: int findRepeatNumber(vecto原创 2021-09-28 17:47:49 · 83 阅读 · 0 评论 -
力扣 2.两数相加
题目表述给你两个非空 的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表方法:模拟算法思想- 创建一个虚拟表头,用于存储另外新的表头,将两个链表对应位置的数相加,放在虚拟表头的后面- 使用一个指针去表达已经相加的位的节点,链表不为空,l1,l2分别指向l1->next,l2->next- 需要注意两种情况:1.进位问题(两个三位数相加可能变成四位数)2.某...原创 2021-09-27 18:44:41 · 136 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
题目描述用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead操作返回 -1 )方法:双栈思路和算法- 对列是先入先出,栈是先入后出,想要用栈实现队列,需要两个栈- 栈1负责存储数据,即插入数据都加入到栈1,栈2负责删除数据,数据从栈1弹出,加入到栈2中- 插入时栈1可以直接插入,删除时先判断栈2是否为空,如果为空,利用循环将栈1.原创 2021-09-27 15:43:04 · 62 阅读 · 0 评论