自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

旺财财的博客

摆烂摸鱼王

  • 博客(41)
  • 收藏
  • 关注

原创 gdb常用指令

当需要查看一段连续的内存空间的值时。比如数组的一段大小,或者是动态分配的数据的大小。可以使用@符号查看。@的左值是第一个内存的地址的值,右值是你想要查看的内存的长度。观察点一般是使用来观察某个表达式的值是否发生了变化,如果有变化就停止程序。使用break或者b命令来设置断点。或者可以循环打印出数组的每一个值。

2023-10-29 23:23:30 348

原创 MySQL学习问题记录

查看当前建表信息,发现MySQL有默认的一个查询规则,受该规则影响,查询结果按照主键的顺序排序显示。写入数据顺序id为10 2 7 1。查寻时返回记录顺序为1 2 7 10?更新一条数据后仍然按照主键id排序显示查询结果。

2023-09-10 23:19:43 301

原创 暴力的枚举

枚举算法又叫穷举算法,光听名字就是能知道这个很暴力。有一个题:□3 * 6528 = 3□ * 8256,在两个方框里面填入相同的数字使得等式成立。你可能会觉得这个很简单,3行代码就可以搞定:for (i = 1; i <= 9; i++) { if ((i * 10 + 3) * 6528 = (3 * 10 + i) * 8256) { printf("%d\n", i); }}这就是最简单的枚举算法。枚举算法的基本思想就是有序的去尝试每一种可能。现在

2022-04-06 23:35:19 460

原创 图的遍历--深度优先搜索

深度优先搜索和广度优先搜索,其实都是针对图的变量而言的。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GHl9b53M-1649174978055)(…/…/…/AppData/Roaming/Typora/typora-user-images/image-20220405230039027.png)]简单来说,图就是一些圆点和连接这些圆点的直线组成。例如上图的这五个定点和四条边。我们现在从1号顶点开始遍历整个图,遍历指的就是把图的每一个顶点都访问一次。使用深度优先搜这

2022-04-06 00:10:15 2457

原创 广度优先搜索

在前面的迷宫中,我们使用了深度优先搜索的方法,这里介绍一个新的方法来解决这个问题——广度优先搜索,也称为宽度优先搜索。这里还是用一个二维数组来存储迷宫,最开始的时候A也是在迷宫(0, 0)处,他可以往下走或往右走。还是采用和深度优先搜索一样的方法,我们先让他往右走,然后一直尝试下去,直到走不通了再返回这里。这样就是深度优先,可以通过函数的递归方式来实现。现在介绍的方法是:通过一层一层的拓展的方法来实现找打B。拓展时发现一个点就将正点加入列表中,直至发现B的位置。最开始A的位置是在入口(0, 0),一步.

2022-04-03 12:39:43 575

原创 DFS应用

有一天,A一个人去玩迷宫。但是方向感不好的它迷路了。B得知后便要去解救A,B显然是有备而来,已经是知道了迷宫的地图,但是B现在要以最快的速度去解决A。那么问题就从现在开始了。​ 迷宫由n行m列的单元格组成,每个单元格要么是空地,要么就是障碍物。你的任务是帮助B选择一个从迷宫起点到A所在位置的最短路径。注意:障碍物是不能走的,当然B也不能走到迷宫之外。​ 首先,我们当然需要一个二维数组来存储这个迷宫,刚开始的时候,B处于迷宫的入口处(0, 0)。A处于(p,q)。其实,就是从(1,1)到(p,q)的最

2022-04-02 23:16:19 490

原创 二叉树与二叉树遍历

树的介绍​ 你可能回文树和图有什么区别?这个称之为树的东西和无向图差不多嘛。树其实就是不包含回路的连通无向图。​ 图画的不好啊,把箭头忽略一下将就看一下,上面这个图左边就是一棵树,而右边就是一个图。因为左边没有类似右边存在的1->2->5->3->1这样的回路。​ 正式因为树有不包含回路这个特点,所以被赋予了很多的特性:一棵树的任一两个结点有且只有唯一一条路径连通一棵树有n个结点,那么它一定恰好有n-1条边在一棵树中加一条边将会构成一个回路树这个特殊的数据结构会在

2022-03-28 23:27:20 894 1

原创 深度优先搜索

​ 有一个问题,输入一个数n,输出1~n的全排列。这里先将这个问题形象化,举个例子。假如有编号为1、2、3的3张扑克牌和编号为1、2、3的3个盒子,现在需要将这3张扑克牌分别放到3个盒子中,并且每个盒子只能放一张扑克牌。那么一共有多少种方法呢?​ 现在让A先来,A手里有3张扑克牌,首先走到1号盒子面前,此时A心里想:他是要先放1号扑克牌,还是2号扑克牌,还是3号扑克牌呢?现在要生产的全排列,很显然3种方式都要去尝试。那么现在就先约定好一个顺序先:每次走到一个盒子面前都先放1号,再放2号,最后才来放3号。

2022-03-27 17:35:04 448

原创 数组模拟链表

​ 如果你很难理解指针这些,没关系,还有一种使用数组来实现链表的方式,叫做模拟链表。​ 链表中每一个节点只有两个部分。我们可以用一个数组data来存储序列中的每一个数。那么每一个数的右边的数是谁呢?这样要怎么解决呢?我们还需要一个数组right来存放序列中每一个数右边的数是谁就行了。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCZmfDrl-1648352864399)(…/…/AppData/Roaming/Typora/typora-user-images/ima

2022-03-27 11:48:11 1683

原创 数据结构 - 链表

在存储和一大波数的时候,我们通常使用的是数组,但有时候数组显得不够灵活,比如以下示例:​ 有一串已经从小到大排好序的数2 3 5 8 9 10 18 26 32。现在需要往这串数字中插入一个6,使得新的序列仍然符号从小到大的排列。我们如果使用数组来时间这一操作就需要将8和8后面的数全部依次往后挪一维。这样操作显然很耽误时间,如果使用链表就会快很多。​ 如何实现链表呢?在C语言中可以使用动态指针和动态分配内存函数malloc来实现。指针?天啊!如果你在学习C语言的时候没有搞懂指针,或者还不知道指针是啥,

2022-03-27 10:30:33 1232

原创 栈和队列——小猫钓鱼

​ 星期天A和B在一起玩扑克牌,他们在玩一个古怪的扑克牌游戏——小猫钓鱼。游戏的规则是这样的,将一副扑克牌平均分成两份,每人拿一份。A先拿出手中的第一章牌放在桌上,然后B也从手里拿出一张牌放在桌上,就放在A刚刚出牌的上面,就像这样两个人交替出牌。出牌时,如果某人打出的牌与桌面上某张牌的牌面相同,即可将两张相同的牌和其中夹的牌全部取走,并依次放到自己的牌的末尾。当一个人的牌耗尽时,游戏结束,对手获胜。​ 假如游戏开始时,A手中有6张牌,顺序为2 4 1 2 5 6,B手中也有6张牌,顺序为3 1 3 5 6

2022-03-24 00:23:23 3920

原创 后进先出 - 栈

​ 前面了解了队列,它是一种先进先出的数据结构,还有一种后进先出的数据结构,它叫做栈。栈限定为只能在一端进行插入和删除操作。比如说有一个小桶,小桶的直径只能放一个球,我们现在在桶内依次放入2,1,3号小球。假如你现在需要拿出2号小球,那就必须先把3号小球拿出,然后再拿出1号小球,最后拿出2号小球。在刚才取小球的过程中,我们最先放进去的小球最后才能拿出来,最后放进去的小球却可以最先拿出来。​ 栈究竟有哪些作用?先看一个例子。xyzyx是一个回文字符串,所谓回文字符串就是指正反读均为相同的字符序列。通过栈这个

2022-03-23 00:00:44 1509

原创 数据结构 队列

队列​ 解密QQ号,A向B询问QQ号,A并没有直接给B,A给了B一串加密过的数字,同时告诉了B解密规则。规则是:先将第1个元素删除,然后将第2个元素放到最后,再将第3个元素删除,然后将第4个元素放到最后…,直到剩下最后一个数,将最后一个数也删除。​ OK,现在开始模拟一下规则,给出数字6 3 1 7 5 8 9 2 4这样9个数字,解密后应该是6 1 5 9 4 7 2 8 3。​ 开始模拟过程,刚开始是6 3 1 7 5 8 9 2 4,然后删除6,把3放到最后,1 7 5 8 9 2 4 3,然后

2022-03-21 23:54:03 857

原创 常用的快速排序

快速排序​ 之前的冒泡排序,解决了之前简化的桶排序的浪费空间的问题,但是在执行效率上牺牲了不少。假如我们的计算机每秒钟可以运行十亿次那么对一亿个数进行排序,桶排序就只需要0.1秒,而冒泡排序需要一千万秒,达到115天之久,这时间就有点吓人。那么有没有既不浪费内存空间又可以快速排序的算法呢?那就是快速排序了,光听名字就知道很快了。​ 假设我们现在要对 6 1 2 7 9 3 4 5 10 8这10个数进行排序。首先要在这个序列中找出一个基准数。为了方便就让第一个数6来做基准数,接下来就是将序列数中比基准数

2022-03-20 16:58:49 555

原创 冒泡排序法

冒泡排序​ 简化版的桶排序不仅仅有之前说过的遗留问题,更要命的是:它非常浪费空间,例如需要排序的范围是0~2100000000,那么你就必须要申请2100000001个变量,也就是说你要申请一个这样的数组 int a[2100000001]。因为我们需要使用2100000001个桶来存储这个范围里每一个数的出现的次数,即便我只给你5个数字或者1个数字,你还是需要申请一个这么大的数组来存储。这样就太浪费空间了。还有,如果现在需要排序的不再是一些整数,而是一些小数呢?如果要将这些小数进行排序那么要怎么办呢?下

2022-03-16 00:12:24 264

原创 最简单最快速的排序——桶排序

最简单最快速的排序 —— 桶排序​ 期末考试完了老师需要将同学们的分数按照高低进行从高到低的排序。班上只有5个同学,这个五个同学分别考了5分、3分、5分、2分和8分(满分10分),接下来就要对分数进行排序,排序后的顺序是8 5 5 3 2。有没有一种办法可以让随机读取5个数,然后按照5个数从大到小进行排序输出?​ 首先借助一个一维数组解决这个问题。​ 首先我们申请一个大小为11的数组int a[11]。然后现在已经就有了11个变量,编号为a[0] ~ a[10]。刚开始的时候,我们将a[0] ~ a[

2022-03-14 00:20:05 1475 1

原创 2016. 增量元素之间的最大差值

给你一个下标从 0 开始的整数数组 nums ,该数组的大小为 n ,请你计算 nums[j] - nums[i] 能求得的 最大差值 ,其中 0 <= i < j < n 且 nums[i] < nums[j] 。返回 最大差值 。如果不存在满足要求的 i 和 j ,返回 -1 。示例 1:输入:nums = [7,1,5,4]输出:4解释:最大差值出现在 i = 1 且 j = 2 时,nums[j] - nums[i] = 5 - 1 = 4 。注意,尽管 i

2022-02-28 21:51:42 64

原创 snprintf

int snprintf ( char * str, size_t size, const char * format, ... );该函数把将可变参数**(…)**按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断参数str – 目标字符串。size – 拷贝字节数(Bytes)。format – 格式化成字符串。… – 可变参数。返回值1、如果格式化后的字符串长度小于 size,则会把字符串全部复制到 s

2022-02-28 14:03:07 1013

原创 qsort

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))该函数用于对数组进行排序参数base – 指向要排序的数组的第一个元素的指针。nitems – 由 base 指向的数组中元素的个数。size – 数组中每个元素的大小,以字节为单位。compar – 用来比较两个元素的函数。返回值该函数不返回任何值#include <stdio.h>

2022-02-27 17:47:28 59

原创 atoi()

int atoi(const char *str)atoi函数把参数str指向的字符串转换为整型str:要转换为整型的字符串返回值:该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。#include <stdio.h>#include <stdlib.h>#include <string.h>int main(){ int val; char str[20]; strcpy(str, "98993489");

2022-02-27 17:40:35 60

原创 strtok

char *strtok(char *str, const char *delim)str:要被分解成一小组字符串的字符串delim:包含分隔符的字符串返回值该函数返回被分解的第一个子字符串,如果没有可检索的字符串,则返回一个空指针。#include <string.h>#include <stdio.h> int main () { char str[80] = "This is - www.runoob.com - website"; con

2022-02-27 17:26:02 119

原创 1332. 删除回文子序列

给你一个字符串 s,它仅由字母 ‘a’ 和 ‘b’ 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。返回删除给定字符串中所有字符(字符串为空)的最小删除次数。「子序列」定义:如果一个字符串可以通过删除原字符串某些字符而不改变原字符顺序得到,那么这个字符串就是原字符串的一个子序列。「回文」定义:如果一个字符串向后和向前读是一致的,那么这个字符串就是一个回文。示例 1:输入:s = "ababa"输出:1解释:字符串本身就是回文序列,只需要删除一次。示例 2:输入:s = "ab

2022-02-27 16:47:18 90

原创 2000. 反转单词前缀

给你一个下标从 0 开始的字符串 word 和一个字符 ch 。找出 ch 第一次出现的下标 i ,反转 word 中从下标 0 开始、直到下标 i 结束(含下标 i )的那段字符。如果 word 中不存在字符 ch ,则无需进行任何操作。例如,如果 word = “abcdefd” 且 ch = “d” ,那么你应该 反转 从下标 0 开始、直到下标 3 结束(含下标 3 )。结果字符串将会是 “dcbaefd” 。返回 结果字符串 。示例 1:输入:word = "abcdefd", ch =

2022-02-27 14:58:44 191

原创 1523. 在区间范围内统计奇数数目

给你两个非负整数 low 和 high 。请你返回 low 和 high 之间(包括二者)奇数的数目。示例 1:输入:low = 3, high = 7输出:3解释:3 到 7 之间奇数数字为 [3,5,7] 。示例 2:输入:low = 8, high = 10输出:1解释:8 到 10 之间奇数数字为 [9] 。提示:0 <= low <= high <= 10^9int countOdds(int low, int high){ if (hig

2022-02-27 14:55:38 159

原创 1491. 去掉最低工资和最高工资后的工资平均值

给你一个整数数组 salary ,数组里每个数都是 唯一 的,其中 salary[i] 是第 i 个员工的工资。请你返回去掉最低工资和最高工资以后,剩下员工工资的平均值。示例 1:输入:salary = [4000,3000,1000,2000]输出:2500.00000解释:最低工资和最高工资分别是 1000 和 4000 。去掉最低工资和最高工资以后的平均工资是 (2000+3000)/2= 2500示例 2:输入:salary = [1000,2000,3000]输出:2000.

2022-02-27 14:51:51 92

原创 1137 - 第N个斐波那契数

泰波那契序列 Tn 定义如下:T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2给你整数 n,请返回第 n 个泰波那契数 Tn 的值。示例 1:输入:n = 4输出:4解释:T_3 = 0 + 1 + 1 = 2T_4 = 1 + 1 + 2 = 4示例 2:输入:n = 25输出:1389537int tribonacci(int n){ if (n == 0) { ret

2022-02-27 14:48:37 78

原创 1447 - 最简分数

给你一个整数 n ,请你返回所有 0 到 1 之间(不包括 0 和 1)满足分母小于等于 n 的 最简 分数 。分数可以以 任意 顺序返回。示例 1:输入:n = 2输出:["1/2"]解释:"1/2" 是唯一一个分母小于等于 2 的最简分数。示例 2:输入:n = 3输出:["1/2","1/3","2/3"]示例 3:输入:n = 4输出:["1/2","1/3","1/4","2/3","3/4"]解释:"2/4" 不是最简分数,因为它可以化简为 "1/2" 。示例 4

2022-02-27 14:33:31 69

原创 537 - 复数乘法

复数 可以用字符串表示,遵循 “实部+虚部i” 的形式,并满足下述条件:实部 是一个整数,取值范围是 [-100, 100]虚部 也是一个整数,取值范围是 [-100, 100]i2 == -1给你两个字符串表示的复数 num1 和 num2 ,请你遵循复数表示形式,返回表示它们乘积的字符串。示例 1:输入:num1 = "1+1i", num2 = "1+1i"输出:"0+2i"解释:(1 + i) * (1 + i) = 1 + i2 + 2 * i = 2i ,你需要将它转换为 0+2

2022-02-27 14:28:47 90

原创 917.仅仅反转字母 -- C

给你一个字符串 s ,根据下述规则反转字符串:所有非英文字母保留在原有位置。所有英文字母(小写或大写)位置反转。返回反转后的 s 。示例1输入:s = "ab-cd"输出:"dc-ba"示例2输入:s = "a-bC-dEf-ghIj"输出:"j-Ih-gfE-dCba"示例3输入:s = "Test1ng-Leet=code-Q!"输出:"Qedo1ct-eeLg=ntse-T!"解答bool is_letters(char *c){ if ((*c >= '

2022-02-26 00:17:24 97

原创 C语言入门篇

文章目录C语言入门篇1. C程序的构成1.1 头文件1.2 主函数1.2.1 main()函数的形式1.2.2 main()函数的返回值1.3 其他组成部分1.4 函数定义1.5 注释1.6 拓展训练1.6.1 打印字母C1.6.2 scanf()函数的应用1.7 C语言的一些基础规范1.7.1 规范命名1.7.2 美观对称1.7.3 注释形式2. 数据是一切程序存在的基础2.1 C语言中的数据类型2.1.1 基本类型2.1.2 构造类型2.1.3 指针类型2.1.4 空类型2.2 数据的存储原理2.2.1

2021-09-17 20:18:04 1489

原创 链家深圳二手房房价数据分析

文章目录链家深圳二手房房价数据分析1. 链家数据爬取源码2. 雷达图的绘制2.1 源码2.2 雷达图效果图3. 饼状图的绘制3.1 源代码3.2 饼状图效果图4. 多维散点图4.1 源码4.2 多维散点图效果图5. 玫瑰图5.1 源码5.2 玫瑰图效果图6.折线图6.1源码6.2 折线图效果图链家深圳二手房房价数据分析1. 链家数据爬取源码import csvimport pandas as pdimport requestsfrom lxml import etreeheaders = {

2021-07-09 21:42:22 1873 1

原创 cloudmusic:网易云爬虫

文章目录cloudmuscic:网易云音乐爬虫安装使用music对象1.music对象属性2. music对象方法3.music对象函数user对象1. user对象属性2.user对象方法3.获取user对象函数cloudmuscic:网易云音乐爬虫一个功能强大的网易云音乐爬取的python库。它支持与音乐相关的,音频文件、音乐封面、歌手信息、歌词、歌曲的相关评论的获赞数、发表时间、发表用户等等各种信息。它还支持与用户先关的,用户等级、昵称、生日、地址、头像、账号创建时间、vip类型、粉丝数量,听

2021-07-09 21:07:55 1768 2

原创 python数据提取基础

文章目录数据提取1.数据提取概述1.1 响应内容的分类1.2 认识xml和html的区别1.3 常用的数据解析方法2.jsonpath模块2.1 使用场景2.2 使用方法2.3 Jsonpath语法规则2.4 jsonpath使用2.5 jsonpath的练习2.6 jsonpath -- 拉勾网3.lxml模块3.1 了解lxml模块和xpath语法4. xpath语法--选取节点以及提取属性或文本内容的语法4.1 xpath定位节点以及提取属性或者文本内容的语法5. xpath语法 -- 选取特定节点的

2021-07-09 17:49:14 705

原创 requests模块

文章目录requests模块1. requests模块的介绍1.1 requests模块的作用1.2 requests模块是一个第三方模块,需要在python环境中额外的安装1.3 requests模块发送get请求2. response响应对象2.1 reponse.text 和 response.content的区别2.2 通过response.content进行decode,来解决中文乱码2.3 response响应对象的其他常用属性和方法3. requests模块发送请求3.1 发送带有header

2021-07-02 15:20:07 178

原创 python爬虫基础

文章目录爬虫概述1. 爬虫的概念2. 爬虫的作用3. 爬虫的分类3.1 根据被爬取的网站的数量的不同,可以分为:3.2 根据是否以获取数据为目的,可以分为:3.3 根据url地址和对呀的页面内容是否改变,数据增量爬虫可以分为:4. 爬虫的流程5. http协议5.1 http以及https的概念和区别5.2 爬虫特别关注的请求头和响应头5.2.1 特别关注的请求头5.2.2 特别关注的响应头5.2.3 常见的响应状态码6. 浏览器的运行过程6.1 http请求过程6.2 注意:爬虫概述1. 爬虫的概念

2021-06-30 19:00:33 100

原创 python 基础

文章目录基础一、变量和数据类型1. 注释2. 定义变量3. 标识符4. 命名习惯5. 使用变量6. 认识bug7. Debug工具打断点8. 认识数据类型9. 总结二、输出1. 输出2. 格式化输出2.1格式化符号2.2 格式化输出实例2.3 格式化字符拓展2.4 f-格式化字符串3. 转义字符4. 结束符5. 总结三、数据类型转换和运算符1.输入1.1 输入的语法1.2 输入的特点2. 转换数据类型2.1 转换数据类型的作用2.2 转换数据类型的函数四、运算符4.1 算数运算符4.2 赋值运算符4.3

2021-06-16 19:29:57 568

原创 处理csv文件

文章目录处理csv文件csv模块reader对象在for循环中,从Reader对象读取数据Writer对象delimiter和lineterminator关键字参数删除csv文件中的表头1.循环遍历每个csv文件2.读入csv文件3.写入csv文件,不包含第一行处理csv文件csv模块csv文件中的每行代表电子表格中的一行,逗号分割了该行中的单元格。csv文件是简单的,缺少Excel表格的许多功能。比如:值没有类型,所有东西都是字符串;没有字体大小和颜色的设置没有多个单元格不能指定单元格的

2021-01-21 12:13:38 878

原创 女生生日程序员没有礼物送?

话不多说直接上代码:from PIL import Image, ImageDraw, ImageFontimport numpy as np# 打开源图片img = np.array(Image.open('3.jpg'))# 创建图像, 修改参数blank = Image.new("RGB", [len(img[0]) * 10, len(img) * 10], "white") # 图片大小尺寸draw = ImageDraw.Draw(blank)# 设置字体和字号fon

2021-01-18 15:28:24 174 3

原创 python基础

python基础文章目录python基础基础语法关键字标识符多行语句数据类型字符串输出import 与from import基本数据类型多个变量赋值标准数据类型Number(数字)数值运算数学函数随机数函数三角函数数学常量String(字符串)字符串切片转义字符字符串运算符字符串格式化字符格式化操作符辅助指令字符串内建函数List(列表)列表切片基础操作访问列标中的值列标更新列表脚本操作符列表截取与拼接列表嵌套列表函数和方法Tuple(元组)访问元组删除元素元组运算符元组切片元组内置函数关于元组是不可变的

2021-01-14 11:19:36 5851 11

原创 简单的数据可视化---绘制散点图

使用scatter绘制散点图并设置其样式要绘制单个点,可以使用函数scatter(),并向它传递一对x和y坐标,它将在指定位置绘制一个点:import matplotlib.pyplot as pltplt.scatter(2,4)plt.show()下面来设置输出的样式,使其更加的有趣:添加标题,给轴加上标签,并确保所有文本都能看清:...

2021-01-11 22:49:08 3466 6

空空如也

空空如也

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

TA关注的人

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