自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 OJ【身高体重排序】

n)进行标识,现需要按照身高由低到高排列,对身高相同的人,按体重由轻到重排列;将每一位同学的身高、体重和序号放到一个数组中,多位同学组成一个二维数组,然后对二维数组按照下面的优先级进行排序,排序后,最后一列的序号则是答案。第一个序列中的数值代表身高,第二个序列中的数值代表体重。排列结果,每个数值都是原始序列中的学生编号,编号从1开始,身高从低到高,身高相同体重从轻到重,体重相同维持原来顺序。这里用到sort函数排序,排序函数需要自己定义,身高为第一优先级,身高相同判断体重,都相同则根据序号排列。

2024-03-26 21:22:29 175

原创 OJ[号码拦截]

每个号码的统计记录的格式如: 13144444444 1 3,以单个空格隔开,表示号码13144444444 接通1次,拒接3次。any函数,用于给定的可迭代参数是否全部为False,则返回False,如果一个为True,则返回True。第一行正数n,表示共有n条电话呼入和白名单操作记录,取值范围为[1,3000].1、定义一个string类型的队列,保存呼入号码出现的顺序,出现过的只保留1次。13300000000 呼入了1次,不在白名单中,接通0次,拒接1次。如果来电号码在白名单中,则电话要接通。

2024-03-26 20:38:01 715

原创 OJ【素数行李箱密码】

(注意,是改变,比如0023改变第4位后,变成0029)每次操作后的数字必须始终是素数(如23和29是素数)。现给定行李箱的初始密码与解锁密码(都是素数,包含前导0),请找出最快的开锁方式(改变次数最少),输出改变次数,如果无法解锁,输出-1。3、分别对四位数的每一位进行BFS遍历,0023 (0023,1023, 2023, 3023 ****,这里只需要保留素数)0023->0059,存在两种开锁方式:0023->0029->0059,或0023->0053->0059,操作次数都是2。

2024-03-16 00:28:24 141

原创 OJ【代码缩进】

请实现一个简易的代码缩进功能:把一段未缩进的代码,通过多次操作,最终实现对没遗憾的缩进长度要求。接下来一行有n个整数,一次表示第1~n行的总缩进长度要求,取值范围:[0, 1000000]。现给出一段代码的每行缩进长度要求,用一个数字序列表示,请计算至少需要多少次操作才能实现。第三次操作:选中第三行,缩进1.完成,共缩进3次。一个整数n,表示代码总行数,取值范围:[1, 65535]。第二次操作:选中中间3行,缩进1。第一次操作:全选中缩进1。一个整数,表示所需的最少操作次数。

2024-03-05 21:55:34 180

原创 OJ【日志敏感信息屏蔽】

3、key在words中,且以非 IP 结尾的:仅需对value中最右侧的长度(L)大于等于4,且连续为数字的子串进行屏蔽,从倒数第L/4+1个数字字符开始(比如L为9,从倒数第三个开始),从右到 左对中间的L/2个字符用 * 代替。日志信息字符串是以,分割的[key:value]格式表示的字符串,value中不会包括字符,和:,以key值区分衣服为敏感信息。敏感信息:其key值有两类,第1类是出现在words中的,第2类是缺省关键字password和pwd(注:第2类优先)。

2024-03-04 23:07:37 307

原创 OJ【最佳升级时间窗】

现给定升级影响的容忍值,和一个周期(7*24)的每小时用户访问量的历史数据(整数数组),请计算最佳升级时间窗,并返回其开始时间和结束时间的下标,如果存在多个最佳升级时间窗时,返回开始时间下标最小的一个。两个整数,分别表示所计算出的最佳升级时间窗的开始时间下标(包含)和结束时间下标(包含),不存在时返回-1,-1。2、升级时间窗必须是连续的X个小时,越大越好,最大的X即为最佳升级时间窗,且不超过7*24。1、sum记录窗口内数据的和,当sum小于等于n时,窗口右边界向右移动;最佳升级窗口为:2 1 1 2。

2024-02-28 22:04:18 944

原创 字符串常量在指针和数组中的表现形式

对于数组变量来说,a1和a2定义时,是不同的两个变量,由系统在堆中或者栈中分配一块内存,然后用字符串"HelloWorld!"去填充,而数组名则是这块内存的首地址,因而不会一样。而指针变量定义时指向的是一块内存,这里指向的是同一块内存地址的字符串常量,也就是“HelloWorld!可以看到,结果是:&"HelloWorld!请问a1 a2 p1 p2之间的关系如何?最近看到一道这样的题目,这里记录一下。

2024-02-01 21:54:51 122 1

原创 C++不定长输入【string类型格式化输入到数组】

函数原型:std::istream& getline(std::istream& is, std::string& str, char delim);std::string & str : 传入参数,存储读取到的一行文本的字符串,也就是被分割出去的那个字符串。另外第一个参数要求char *类型,上面使用了string中的c_str()方法,将string类型转为char *类型。参数说明:std::istream & is : 输入流对象,可以是。这里是将输入的字符串作为stringstream的输入。

2024-01-16 22:36:38 476

原创 数据结构---哈希表(开散列)

哈希函数使用了除留余数法,选择与桶的大小最相近的一个质数。

2023-12-09 11:45:15 383

原创 数据结构---双向链表

单向链表在之前的队列和stack中有使用到,这里画一下双向链表的模型

2023-12-02 16:19:49 307

原创 数据结构---栈-链表模型

栈-链表模型的代码和上一篇队列的链表写法差不多,这里采用C++的方式写,使用类模板,使得栈中的数据类型可以自定义。

2023-11-28 22:43:37 406

原创 数据结构---链表队列

由链表作为存储结构的队列模型

2023-11-25 23:47:08 309

原创 数据结构----数组队列

由数组作为存储方式的队列模型

2023-11-25 12:51:29 328

原创 数据结构---二叉树

记录一下二叉树的相关代码,方便回忆,基础知识不做介绍。这里层序遍历需要用到队列,C语言得手搓队列,记录一下。

2023-11-24 22:59:37 372 1

原创 C++ 线程池【生产者消费者模型】

生产者同样也有5个线程,5个线程不间断的去询问队列,是否有任务可做,如果没有,则使用pthread_cond_wait()阻塞当前线程。这个例子用到的知识非常多,包括:类模板、单例模式、STL中的队列、条件变量、互斥锁、以及多线程等,值得细看。主要描述了,main函数创建了5个生产者线程,不断向queue中加入task。此代码忘记在哪里看到的了,今天偶尔翻到,这里记录一下,如有侵权请聊系我删除。使用t() 去处理队列中的任务,这个是重载了()运算符。用于阻塞当前线程,等待别的线程使用。

2023-11-11 15:05:45 67 1

原创 git 常用命令

git branch --set-upstream-to=origin/master 设置跟踪远端master主干分支。④ git fetch -p 更新本地的远程跟踪分支列表,以确保已删除的远程分支不在显示。③ git push origin --delete git push origin HEAD:git pull origin 同步指定分支的代码。② git branch -D

2023-11-02 22:55:41 23 1

原创 Makefile如何同时编译多个程序

比如说,在一个目录下,我有很多个.cpp文件,每一个.cpp文件代表着一个独立的程序,那么我们怎么去编写Makefile,使该目录下的.cpp能全部编译成可执行文件呢。obj=$(patsubst %.cpp, %, $(src)) 表示:匹配该目录下全部的.cpp文件去掉后缀后,文件名链接到%符号上。ALL:$(obj) 表示:将所有的文件名去掉后缀作为目标,所以Makefile的终极目标是可以有多个的。g++ $< -o %@:则是具体的编译命令了,$

2023-10-12 22:15:50 335

原创 const修饰的变量能不能修改

2. 结构体里的成员若用const修饰,则其值可被修改,因为现有操作系统无法提供双层或多层保护:既在对象级保护对象,又在成员级保护成员。若在函数外定义数组x和y,则修改x[0]=3无效而修改y[0]=3有效。1. 简单类型的变量,如int、double的变量,如果用const限定则其值不能修改,例如const int x=3;修改其值c[0]='A'是有效的,若在函数外定义则修改无效。对于第4条,我验证了下,在函数外,修改y[0]也是无效的,不知道是不是我编写有误,有知道的大神请留言赐教。

2023-10-12 21:56:52 60

转载 【转载】C++中的显式类型转换static_cast、dynamic_cast、const_cast

C++中的类型转换分为两种:隐式类型转换;显式类型转换。而对于隐式变换,在很多时候,不经意间就发生了,比如int类型和float类型相加时,int类型就会被隐式的转换位float类型,然后再进行相加运算。而关于隐式转换不是今天总结的重点,重点是显式转换。

2023-10-12 21:10:26 38

原创 指针变量的值传递和地址传递

其实是这样的,指针变量p的地址被当做参数传递到func函数中被形参a接收,形参a的地址重新赋值为hello world。也就是p的地址被赋值了一份给a,然后对a地址重新赋值,指向了hello world字符串常量的地址,压根修改过p地址里面的内容。而二级指针进行*p运算,得到的就是p的地址。然后将p的地址指向字符串常量hello world的地址,这样p的内容也就随之被改变了。最后p的打印结果还是test,之前理解的不透彻,这里传递的不是指针吗,为什么指针变量p的值没有被改变呢?

2023-10-08 21:43:01 103 1

原创 c++ 返回局部变量char *

之前了解的是,const char* buff 定义的是局部变量,在函数结束后应该是被销毁了的,为什么能正常返回呢?初始化为0的全局变量和初始化为0的静态变量存放在bss段。变量buff在函数结束后,肯定是被销毁了,但是字符串常量是存在常量区的,在程序结束前都可以访问。根据上面运行的结果可知,定义的buff变量,跟字符串常量,以及返回的结果的地址都是同一个。字符串、数字常量存放在常量区。bss段:未初始化的全局变量和未初始化的静态变量存放在这里。data段:已初始化的全局变量和静态变量存放在data段。

2023-10-08 21:12:38 72 1

转载 [转载] C++常见容器及其操作

本文主要记录一下STL中一些常见的容器(包括、deque、queue、list、stack、set、map),及其对应的常见的操作,不涉及更深层次原理性的知识。方便以后使用、查阅。

2023-08-29 21:14:34 63 1

原创 C语言 int和unsigned int 隐式转换

11····1111 0010 ------> (取反)10···· 0000 1101 ---------> (+1)10···· 0000 1110 -------> -14。a+b 为补码相加:00····0000 0110 + 11····1110 1100 = 11····1111 0010(补码,省略号全为1)注:如果带符号类型的值域包含了无符号类型所表示的值,就把无符号类型转化为有符号类型。上面说的,机器并不知道11····1111 0010这个是有符号数还是无符号数。

2023-08-29 20:45:33 300 1

原创 Makefile入门

obj=$(patsubst, %.c, %.o, $(src)) #在src中匹配所有后缀为.c的文件,并将满足条件的文件,其前缀使用%通配到.o的前缀(例如 test.c 经过这个函数后,则变为test.o %则对应前缀test)makefile 在大型项目的编译中是必不可少的一个东西,这里简单介绍下入门级的Makefile,总结来说就是:一个规则,两个函数,三个变量。# clean也是一个目标,可以通过make + clean 去执行,意思是,删除终极目标,和中间产物(那些.o文件)

2023-08-15 22:48:08 42

原创 C++ 重载后置递增运算符编译错误之《常量引用》

根据运算符优先级,先计算p2++ ,根据重载的后置递增函数可,运行结束后返回一个临时对象。也就是我们所说的右值,不能对他进行赋值操作。然后再传入

2023-07-02 00:14:27 99 2

原创 const《指针常量和常量指针》记录下之前理解错误的地方

那么*(p1 +3) = 'g' 为什么不行呢,意思不能通过p1这个变量去改变对应地址的值吗。答案是的,如下,如果我用另外一个指针p2,同样指向数组名s,然后通过*p2 = 'i';先思考一下,上面代码能不能运行成功,p1是个常量指针,也就是p1指向的内容不能变,p1的地址是可以改变的。p1[3] = 'g' ,那p1+3处的内容能不能改变呢?答案是可以的,p2[3] 等价于 *(p2 +3);如果将上面代码中的常量指针,改成指针常量呢。指针可改变,该指针变量指向的内容不能改变,是只读的。

2023-06-07 23:12:45 53 1

转载 音视频:PCM转AWV

如上代码,执行后可将PCM格式转化为awv格式。需要注意的是,雷神的代码可能是在32位机上跑的,如果是64位系统,则需要把long改为int类型。AudioFormat代表不同的压缩方式,表二说明了相应的压缩方式。上表注意,传输速率:采样率*采样位数(44.1K * 2Byte)"RIFF" 对应ASCLL"0x52494646"如果文件采用PCM编码,则该子块剩余字节数为16。如果采用PCM编码,该值不存在。实际样本数据的大小(单位:字节)。如果采用PCM编码,该值不存在。“fmt ” 注意有个空格。

2022-10-27 00:05:12 186

原创 C语言-struct内存分布

因为结构体的内存分配是连续的,所以从数组a的首地址开始拷贝,“hello” 加上'\0'总共6个字节,是没有超过结构体总的长度的(28Byte),所以该程序不会报错,且能正常运行。看结构体中的a,b变量,其内存分布是连续的,那也就是,当我从b的首地址先拷贝“hello world!这里有点离谱,在linux中编译的,竟然没有报错,且能正常运行,可能是gcc版本有点低。a[4] 可以理解为:以a的首地址,也就是c0开始偏移4Byte,也就是*(t1.a+4);答案是可以,输出:o。

2022-10-10 23:00:17 460

原创 sizeof计算结构体占用内存大小

从上面的输出可以看到结构体t1的内存是连续分布的(这里有百度过说是不一定是连续的),可以看到,变量a的地址为d0,b的地址为d4,相差4个字节,可知变量a占一个字节即d0,而d1、d2、d3则会空出来,由于字节对齐b变量则从d4开始。这里需要考虑到字节对齐的因素,而字节对齐则会影响机器的效率,具体可以搜一下别人的见解,这编文章主要是记录下自己在学习计算结构体大小时的一些困惑。所以可知这种情况下,内存对齐,int为4字节,则char就以4字节对齐,long为8字节则以8字节为基准对齐。

2022-10-08 20:33:08 308

原创 ffmpeg 编译安装 和SDL简单的视频播放器实现

一、源码获取首先从下面地址先获取ffmpeg最新版本源码,如果没有git命令,则需要先安装git apt-get install gitgit clone https://git.ffmpeg.org/ffmpeg.git源码下载完成后,进入ffmpeg目录,执行如下脚本 ./mk.sh#!/bin/bash ./configure \ --prefix=/usr/local/ffmpeg \ --enable-gpl \ --enable-nonfree \ --enable-..

2021-06-10 11:21:45 1750

空空如也

空空如也

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

TA关注的人

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