自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 leetcode刷题(python)——(十)

所以我们在该区间内使用二分查找寻找最合适的结果,通过一个judge函数来判断,judge的实现使用遍历即可,当大于weight时天数+1,最后返回的天数与给定的days相等,则为最低载重。该题可以使用二分法和牛顿法,我在之前的文章中有提到过,详情可以参见该篇文章(C语言实现)https://blog.csdn.net/weixin_46640900/article/details/136544697?,货物必须按照给定的顺序装运。的两个数,并返回两个数在数组中下的标值。天内将所有包裹送达的船的最低运载量。

2024-04-27 00:48:42 679

原创 leetcode刷题(python)——(九)

使用二分查找,但是需要注意的是,二分查找有时会使我们陷入死循环,所以在查找时,需要在更新边界时+1或-1,这时当跳出循环时,left == rigt而mid可能不再是所求结果。:在数组中找到目标值,并返回下标。如果找不到,则返回目标值按顺序插入数组的位置。同样使用二分查找逼近目标位置,若目标值不存在则返回其下标。我们只能通过调用接口来判断自己猜测的数是否正确。在数组中的位置,如果找不到,则返回 -1。:要求返回题目选取的数字。:给定一个排好序的数组。:给定一个升序的数组。

2024-04-27 00:36:51 1122

原创 leetcode刷题(python)——(七)

使用双指针法来解题,把数组中的0和2放置到两侧,当两个指针相等时停止循环。:将数组进行排序,使得红色在前,白色在中间,蓝色在最后。同样只是简单的排序即可,这里使用堆排序简单演示一下。使用排序算法即可,这里使用快排。,分别代表红色、白色、蓝色。:给定一个未排序的整数数组。

2024-04-22 20:29:35 867

原创 leetcode刷题(python)——(六)

求解该题逆序列,我们可以先反转该序列,然后加入到新的数组我们每插入一个数时,插入前的数据,在原数组中比它小,并且在它后面可以和它构成逆序对的数字。在该题中首先合并两个数组,然后因为两个数组都是有序的,所以可以使用插入排序或者选择排序,将后面的数据插入到前面的有序序列。首先先做好排序,确认各个分数对应的名词,然后通过字典将分数与名词形成映射,随后对原表进行遍历,在字典中寻找结果。:找出他们的相对名次,并授予前三名对应的奖牌。名运动员在比赛中的成绩。:计算出数组中的逆序对的总数。

2024-04-21 22:35:03 693

原创 leetcode刷题(python)——(五)

在本题中,使用到了sort()函数,但是简单的排序并不能解决问题,我们需要考虑,如果是两位数的话,在个位的数字是不是小于列表剩余未排序的数字,在sort中提供了一个key的参数,可以帮助我们自己指定规则。该题只是单传的考察排序算法,可以使用sort(),但建议手撸一边加深印象,需要注意的是,该题不可以用O(n^2)的算法。本题可以使用选择排序解决,但是在这里我选择另外一种方式,首先记录所有零的索引,然后通过记录的索引逐个移动。:将数组中的数字拼接起来排成一个数,打印能拼接出的所有数字中的最小的一个。

2024-04-21 21:29:37 1230

原创 leetcode刷题(python)——(四)

我们可以发现轮转后的数组是把原来的四个数组按照下标重新组成了新的四个数组,按照下下标重新组成数组,我们不难想到zip()函数。而后我们发现15 13 2 5的顺序变成了倒序,我们可以选择在新数组中变成倒叙,或者在zip之前将四个数组重新排列。在该题中我们可以借鉴上一题的思路,因为我们要获得这些元素的顺序,可以不断的进行反转。:以对角线遍历的顺序,用一个数组返回这个矩阵中的所有元素。在该题中我们可以先尝试举几个例子,发现一些规律。:按照顺时针旋转的顺序,返回矩阵中的所有元素。大小的二维矩阵(代表图像)

2024-04-18 22:47:58 926

原创 leetcode刷题(python)——(三)

在python当中我们可以很好的利用列表的切片来完成,可以省去一个个移动的麻烦,但是需要注意的是,在k值可能是大于n,所以我们需要用k%n来定位。我的解决办法是,从后向前检验10的存在,有10则进1,然后要在下标为0的位置加一个特判。对于该题,也就是求两侧和的过程,用一个遍历即可,需要注意的是,要先把左值初始化为0。该问题中只需要在末尾加1即可,但是需要考虑的是进位。:找到「左侧元素和」与「右侧元素和相等」的位置,若找不到,则返回。:给定一个非负整数数组,数组每一位对应整数的一位数字。

2024-04-18 22:27:14 516

原创 leetcode刷题(python)——(二)

该题思路在上述解释中已经清晰的展示出,不需要过多赘述,因为使用python解题,应尽量使代码简洁。可以通过列表表达式来解题,因为数组中的第一个元素是不需要改变的,所以我们使用切片,直接选择后面的元素。该题可以很明显的看到是二维数组中求和最大的一维数组。但是python中提供了内置函数帮我们解决这一问题,个人认为在使用python的过程中,能更简洁的代码可以选择更简洁的做法,摒弃掉一些实现细节的考虑。:将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。:返回最富有客户所拥有的资产总量。

2024-04-16 20:04:57 797

原创 leetcode刷题(python)——(一)

选择使用python解题应当充分利用python的特性,列表支持加法和乘法的,所以在实现上要更简便。同样是一道很简单题,只需要遍历一次字符串stones即可。代表石头中宝石的类型,再给定一个字符串。中每个字符代表了一种你拥有的石头的类型。:计算出拥有的石头中有多少是宝石。一道很简单基础的题,直接返回即可。开始计数 ,对于所有。:返回这两个整数的和。

2024-04-16 19:10:47 717

原创 C语言程序与设计——工程项目开发

我们可以发现在编译过程中,报出的警告是未声明函数,而不是未定义,当我们对对象文件进行编译的时候才会出现未定义的错误。也就是说在编译前,计算机检查的是语法和语义的错误,在编译后,报出未定义,也恰恰说明了,在链接过程中,程序开始进行组合。

2024-04-08 21:59:22 1055

原创 C语言程序与设计——指针地址与main函数

在C语言中,最重要的就是对于指针和地址的理解,因为C语言是更接近底层的编程语言,所以它可以允许开发者对内存操作,这也是区别于其它编程语言的一个重要特性。如何对内存进行操作呢。我们知道在编程过程中,在任何语言中,我们在定定义一个变量的过程中,实际上就是向操作系统申请了一块内存,但由于其它编程语言不支持我们对于内存进行操作,所以我们只知道申请了一块内存,但不知道该位置在哪。由于C语言支持我们对于内存的操作,所以我们可以通过在变量前加一个取地址符&,得到该内存的地址,数组的话无需加取地址符。

2024-04-04 14:09:10 1089

原创 C语言程序与设计——复杂结构

结构体在C语言中是一种重要的数据类型,或者说是一种用户自定义的相同或不同数据类型的集合。可以帮助我们封装一组相关数据,使其数据呈现更直观。例如我们想要统计一个学校学生的基本信息。可以将一个同学的信息按照如下存储。这样我们输入和查询数据的时候都可以更快的定位到每个学生的具体信息。在访问结构体内部数据时,根据访问形式的不同,分为直接引用和间接引用匿名结构体,在声明的时没有定义结构体名称,所以匿名结构体只有在声明的时候可以被访问。匿名结构体我们会在下文共用体中演示。

2024-03-31 13:16:21 896

原创 C语言程序与设计——预处理命令

着一种形式比较简单只是单纯的替换,这里对该种情况不做过多介绍#define PIint r = 5;可以通过宏封装一个简易的表达式,但是为什么叫傻瓜表达式呢,正如之前所说,宏只是进行替换,而非进行计算,所以在没有考虑周全的情况下,很容易出错。下面我们以封装一个比较函数为例,返回大的值。分别用到下面五组示例int a = 7;3 : 4));int a = 7;3 : 4));int a = 7;3 : 4));int a = 7;3 : 4))

2024-03-25 23:01:24 959

原创 C语言程序与设计——数组

数组就是相同类型数据的集合,且内存中数组是一片连续的储存单元,所以也是支持随机访问的。在C语言中分为静态数组和动态数组,我们常见的定义形式(如下)都是静态数组,下面这一行代码即实现了数组的定义与初始化。可以看到静态数组的大小是固定的,在声明的时候需要声明数组的长度。但是初始化是不必要的,但是建议做初始化操作。在数组声明的位置中决定了数组是存放在堆区还是栈区,函数内部声明则是在栈区,且系统栈的大小Windows系统为2MB, Linux系统为8MB。所以当数组过大时不建议在函数内部中定义。

2024-03-21 10:11:43 627

原创 C语言程序与设计——函数(三)可变参数

在我们使用c语言时写程序时,总会有一种情况就是函数传参的个数不确定,例如printf()函数,这时就需要用到可变参数,还是以printf()函数为例。可以看到传入参数中有两个部分,第一部分时格式控制字符串,另外一部分就是…,省略号就代表可变参数。在实际使用中我们可以感受到,当我们在打印的字符串中使用占位符时,后面会传入很多具体参数。在使用可变参数时需要注意,可变参数的声明应该放在最后。确定可变参数列表位置,是通过可变参数列表前一个参数来确定何处开始是可变参数。

2024-03-17 15:24:23 872

原创 C语言程序与设计——函数(二)递归练习

可以看到与上一中情况不同的时tail的更新变成了mid - 1,head更新为mid。而且mid也变成了向上取整(若不使用向上取整,当head与tail相邻的时候需要会陷入死循环)

2024-03-10 21:12:23 901

原创 C语言程序与设计——函数(一)

int x;i * i <= x;i++){if(!return 1;不建议使用这种方式,这是一种已经过时的函数定义风格,但是现在的编译器依然可以编译通过,但是只做了解,极其不建议使用。

2024-03-03 20:37:47 930

原创 C语言程序设计——程序流程控制方法(二)

while语句分为do-while和while两种,区别在于循环之前是不是先执行一次循环的内容,可以类似于++i和i++的关系,本质上来讲是相同的。当表达式为真时,则会执行一次代码块,然后继续进行循环条件判断,重复此过程,一直到表达式为假,则跳出循环在循环读入的写法有频繁的使用while语句,也可以看出while语句的适用场景,就是适合没有确切循环次数的循环。

2024-01-14 18:35:47 928

原创 C语言程序设计——程序流程控制方法(一)

在C99之后,C语言开始支持布尔类型,头文件是stdbool.h。在文中我所演示的所有代码均是C99版。在C语言上上述关系运算符中,如果上述关系成立,就为返回值为1,不成立九为,返回值为0。在写代码的时候需要着重注意一下等于的运算符是两个等号,一个等号叫做赋值,这个在编码时候注意。逻辑归一化!!(x)

2024-01-07 14:52:29 1016

原创 C语言程序设计——数学运算

在c语言的数学运算中,所涉及到的符号如图所示,在使用过程中应该了解的就是各个符号在同一条语句中的优先级,以及在现实中很少用到的取余运算符的作用。

2024-01-06 21:52:51 933

原创 C语言程序设计——输入输出函数(二)

在文中简单介绍了输入输出函数printf和scanf,其中它还有一些家族函数,在这里再浅浅补充一下。如下代码框所示可以看到与我们常使用的函数中只是再前面加了f 或 s,我们在creference上查看也会发现他们的功能是相同的。s代表的是string,所以sprintf()和sscanf()这一组输入输出函数代表的是字符数组的输入输出f代表的是file,所以fprintf()和fscanf()这一组输入输出函数代表的是文件的输入输出。

2024-01-06 17:07:09 953

原创 C语言程序设计——输入输出函数

工作之后,已经好久没有学习编程、码代码了,因为最开始是从python开始接触的编程,所以对于一些底层的逻辑了解不够清晰,所以打算从0开始学习一下C语言程序。

2024-01-01 21:34:17 994

原创 数据结构——查找

查找:在数据集合中寻找满足某种条件的数据元素的过程称为查找。查找结果一般分为两种即,查找成功查找失败。查找表(查找结构):用于查找的数据集合称为查找表,可以是一个数组或链表等数据类型静态查找表:若一个查找表的操作仅涉及查询某种元素是否在表中或者检索满足某种特性的数据元素的各种属性,则称该表为静态查找表。(若存在查找插入操作以及删除操作等修改了表,则不是静态查找表,反之我们称为动态查找表)关键字:数据元素中唯一表示该元素的某个数据项的值,使用基于关键字查找,查找结果应该是唯一的平均查找长度:在查找过程

2022-07-11 20:25:41 4723 1

原创 数据结构——排序

排序就是重新排列表中的元素,使得表中的元素满足按关键字有序的过程,为了查找方便,通常希望计算机中的表是按关键字有序的。算法稳定性,若待排序表中两个元素a,b其对应的关键字相同,且a在b前面,若在某一算法排序之后,a仍然在b前面(相对位置不变),则可以说这个算法稳定,若相对位置发生改变,则算法不稳定稳定性并能评判一个算法的优劣,主要是对算法性质描述,若一个序列中不允许重复元素出现,则稳定性的概念也就不存在了在排序过程中,根据元素是否完全在内存中可分为内部排序和外部排序在这里我们只讨论内部排序,一般情况下,

2022-07-09 16:02:15 227

原创 数据结构——树

树与线性表同是逻辑结构的一种,不同于线性表,树是一种非线性结构,线性表的中的数据很明显是一种一对一的关系,树中的数据是一对多的形式。所以树也是一种重要的数据结构。很显然,树的结构是递归的的,即在树的定义中又即树中又有子树,定义中又有自己。同时树也是一种分层结构,具有以下两个特点:二叉树是 另一种树形结构,每个节点之多只有两个子树(所以二叉树中不存在度大于2的节点),并且二叉树的子树也有左右之分不可随意颠倒。 与树相似,二叉树也是以递归的形式定义,二叉树是n(n>=0)个节点的有限集合因为二叉树是有序的所

2022-07-04 15:47:29 1268

原创 数据结构——队列

队列(Queue)同栈一样都是一种操作受限制的线性表,他与栈不同的是,队列只允许在表的一端进行插入数据,另一端进行删除数据。就好像我们现实生活中排队,一端入队,另一端出队,所以队列与栈不同的最大特点就是先进先出(FIFO)。队列的顺序存储队列的顺序存储结构实现是指分配一块连续的存储单元存放队列元素,并附有两个指针头指针(front)和尾指针(rear);front指向队首元素,rear指向队尾后一个位置。所以当rear = front时,则队列为空(非循环链表)。代码实现:这里的size只是为了理解方

2022-07-01 20:00:49 321

原创 数据结构——栈

栈(stack)是只允许在一段进行插入和删除数据的操作的线性表。所以栈是一种操作受限的线性表。栈中有一下三个概念。栈的操作就像一个箱子,我们放入数据的时候只能层层堆叠,取数据的时候只能从最上面的数据开始。这种栈的操作特性可以简单的概括为后进先出(Last In First Out)所以对于栈来讲:他属于线性表,所以逻辑结构依然是线性结构,当然存储结构也可以使用顺序存储和链式存储。栈的数学性质: n各不同元素进栈,出栈元素不同排列个数为1n+1C2nn\frac{1}{n+1}C_{2n}^nn+11​C

2022-07-01 13:19:07 631

原创 线性表——链表

顺序表和链表都是线性表的一种。但链表与顺序表不同的是,他的物理上与逻辑上的机构并不一致。顺序表的话,逻辑相邻,物理上也是相邻的。所以对于一整块连续的物理地址,当我们进行插入和删除操作的时候就会需要大量的移动元素。而链表不需要使用地址连续的存储单元,即不需要满足物理与逻辑一致,通过"链"建立数据之间的逻辑关系,当进行插入或删除操作的时候,只需要修改指针即可。线性表的链式存储为单链表,通过任意一组存储单元来存储数据。链表通过许多节点构成,节点除了放自身的数据还有存放下一个节点的地址来保证链表的逻辑关系。而链

2022-06-30 14:05:45 2551

原创 线性表——顺序表

顺序表顺序表特点顺序表主要特点是随机访问,即通过首地址和元素序号可在时间O(1)内找到指定元素顺序表的存储密度高,每个节点只存储数据元素顺序表逻辑上相邻的元素物理上也相邻,所以插入和删除需要大量元素。顺序表实现我们使用C语言来实现,首先有两个准备知识,一个是结构体的使用,第二个我准备创建一个可动态分配空间的顺序表,所以我们需要使用stdlib.h头文件中的内存管理函数。然后我们需要明确一个顺序表创建需要什么,以及有哪些操作方法。参照上面线性表的操作方式。在创建结构体中可以看到,在数组定

2022-06-29 20:39:37 831

原创 82. 删除排序链表中的重复元素 II(力扣刷题——链表篇)

82. 删除排序链表中的重复元素 II题目:给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。示例 1:输入:head = [1,2,3,3,4,4,5]输出:[1,2,5]示例 2:输入:head = [1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围 [0, 300] 内-100 <= Node.val <= 100题目数据保证链表已经按升序 排列来源:力扣(LeetCode)链接:

2022-04-23 16:23:58 199

原创 剑指 Offer II 022. 链表中环的入口节点(力扣刷题——链表篇)

剑指 Offer II 022. 链表中环的入口节点题目:给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例 1:输入:head = [3,2,0,-4]

2022-04-23 09:05:34 144

原创 剑指 Offer 18. 删除链表的节点(力扣刷题——链表篇)

剑指 Offer 18. 删除链表的节点(力扣刷题——链表篇)给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。返回删除后的链表的头节点。注意:此题对比原题有改动示例 1:输入: head = [4,5,1,9], val = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二个节点,那么在调用了你的函数之后,该链表应变为 4 -> 1 -> 9.示例 2:输入: head = [4,5,1,9], val = 1输出: [4,5,9]解释:

2022-04-21 09:53:57 128

原创 206. 反转链表(力扣刷题——链表篇)

206. 反转链表(力扣刷题——链表篇)给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。示例 1:输入:head = [1,2,3,4,5]输出:[5,4,3,2,1]示例 2:输入:head = [1,2]输出:[2,1]示例 3:输入:head = []输出:[]提示:链表中节点的数目范围是 [0, 5000]-5000 <= Node.val <= 5000进阶:链表可以选用迭代或递归方式完成反转。你能否用两种方法解决这道题?来源:力扣

2022-04-20 20:43:21 131

原创 剑指 Offer 52. 两个链表的第一个公共节点(leetcode刷题——链表篇)

剑指 Offer 52. 两个链表的第一个公共节点题目:输入两个链表,找出它们的第一个公共节点。如下面的两个链表:在节点 c1 开始相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,如果两个列表相交则不能为 0)。从各自的表头开始算起,链

2022-04-20 18:48:05 108

原创 203. 移除链表元素(leetcode刷题——链表篇)

203. 移除链表元素(leetcode刷题——链表篇)题目描述给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。输入:head = [1,2,6,3,4,5,6], val = 6输出:[1,2,3,4,5]示例 2:输入:head = [], val = 1输出:[]示例 3:输入:head = [7,7,7,7], val = 7输出:[]提示:列表中的节点数目在范围 [0, 104

2022-04-20 14:23:32 148

原创 leetcode 1669.合并两个链表

1669.合并两个链表(leetcode刷题——链表篇)题目描述:给你两个链表 list1 和 list2 ,它们包含的元素分别为 n 个和 m 个。请你将 list1 中下标从 a 到 b 的全部节点都删除,并将list2 接在被删除节点的位置。下图中蓝色边和节点展示了操作后的结果:请你返回结果链表的头指针。示例 1:输入:list1 = [0,1,2,3,4,5], a = 3, b = 4, list2 = [1000000,1000001,1000002]输出:[0,1,2,1

2022-04-20 14:00:49 157

原创 Git学习日记(五)

Git学习日记(四)导语上一篇我们介绍了分支,以及合并分支和解决冲突那么到这里,git的一些基本操作就已经差不多了。之前我们一直都是在本地库进行操作,那么下面我们就开始学习一下如何实现本地仓库和代码托管中心的交互操作。我要先说明一下:在这里呢我使用的不是GitHub,因为我使用GitHub时可以正常提交代码,我拉取代码的时候就一直报超时的错误可能是因为不是国内网站。所以我在这使用的是码云.这两个操作实际上是一样的。...

2021-09-17 22:11:49 99

原创 Git学习日记(四)

Git学习日记(三)导语在上一篇当中主要讲了一下本地仓库的操作,查看日志信息,以及使用git进行版本的前进和后退,还有比较不同版本文件以及如何恢复永久删除的文件。在这一篇中我们主要介绍一下分支相关的知识Git 分支在业务开发的流程中为保证开发效率一般都会是多条线同时推进任务。就比如我们的APP标签栏一般都是4-5个标签,那么就不可能一个一个的去开发,而是把这5个标签的功能分配给五个人一同去开发。那么这个时候就需要分支的作用了。master在之前我们的运行结果中我们会经常在命令行后看到有一个m

2021-09-17 18:23:18 612

原创 Git学习日记(三)

Git学习日记(三)导语在上一篇当中我们简单介绍了初始化仓库,设置签名,以及如何向仓库提交文件,需要先用add命令提交到暂存区,之后使用commit提交到本地仓库。那么在这一篇我们会继续之前的内容,主要涉及到实现版本的前进和后退,更换版本的三种方法,恢复永久删除的文件,以及文件的不同版本比较。查看本地仓库在上一篇中我们已经提交了创建的py文件,那么如何查看本地仓库中的文件呢。这里有三种方法命令作用git log打印当前日志内容:哈希值、签名、时间、解释信息,HEAD指针

2021-09-16 23:13:49 164

原创 Git学习日记(二)

Git学习日记(二)导语本篇主要介绍初始化本地仓库,设置签名,以及提交代码等相关命令。初始化仓库首先创建一个文件夹,然后在文件右键,选中git bash选项然后就会弹出git命令行窗口了,你你创建的文件夹就是一个本地仓库了,当然这里呢,我又在文件夹下创建了一个code作为本地仓库。我又新创建了一个new_code文件夹作为演示仓库下面我们就进入该目录下new_code目录下完成初始化工作以及简单的演示一下命令可以看到进入到new_code目录下,我是用ls命令,该目录下没有任何文件,

2021-09-16 20:23:07 102

空空如也

空空如也

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

TA关注的人

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