自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 动态规划算法:leetcode题目

本文介绍了三个动态规划问题的解法:1. 最长公共子序列问题(1143题)使用二维DP数组记录两个字符串的匹配状态;2. 不相交的线问题(1035题)与最长公共子序列解法类似,处理数组而非字符串;3. 最大子数组和问题(53题)使用一维DP数组,记录以每个位置结尾的最大子数组和。三个问题都采用动态规划思想,通过状态转移方程求解最优解,其中前两个问题的解法几乎相同,只是处理的数据类型不同。

2025-10-10 19:31:31 316

原创 股票买卖最佳时机与最长递增子序列解析

本文分析了三个动态规划算法题:1.买卖股票最佳时机(含手续费)使用二维dp数组,分别记录持有/不持有股票状态的最大利润,考虑手续费影响;2.最长递增子序列通过双层循环比较元素,用dp数组记录以每个元素结尾的最长子序列长度;3.最长连续递增子序列只需比较相邻元素,维护连续递增计数。三个问题都采用了动态规划思想,通过状态转移方程求解最优解,其中股票问题涉及状态转移,子序列问题侧重序列比较。

2025-09-28 20:50:12 298

原创 动态规划算法

本文总结了三种股票买卖问题的动态规划解法:1) 多次交易问题使用二维状态(持有/不持有)递推;2) 限制两次交易问题通过四个状态(第一次持有/不持有,第二次持有/不持有)递推;3) 含冷却期问题在状态转移时考虑冷却期限制。所有解法都通过维护状态数组,在遍历价格序列时更新最优解,最终返回最大收益。核心思路都是将买卖过程分解为若干状态,通过状态转移方程计算最优决策。

2025-09-24 20:04:27 330

原创 Leetcode:动态规划算法

文章摘要:本文介绍了三种动态规划算法的实现:1)完全平方数问题,通过初始化dp数组并遍历求解最小平方数组合;2)打家劫舍问题及其环形变种,分别处理相邻房屋和首尾相连的情况;3)股票买卖问题,使用二维dp数组跟踪持有/不持有状态以获取最大利润。每个问题都详细说明了dp数组的定义、初始化方法和状态转移方程,展示了动态规划在解决最优化问题中的应用。这些算法的时间复杂度均为O(n),空间复杂度根据问题从O(n)到O(1)不等。

2025-09-20 20:37:41 460

原创 Leetcode:动态规划算法

本文摘要: 文章介绍了5个动态规划算法问题的Java实现。首先通过斐波那契数列问题展示基础DP解法,使用数组存储中间结果。然后依次讲解了目标和问题(494题)的背包解法,将问题转化为left和right子集;一和零问题(474题)的双限制背包解法;组合总和IV问题(377题)的完全背包解法;以及零钱兑换问题(322题)的最少硬币数解法。每个问题都详细说明了DP数组的定义、初始化、遍历顺序和状态转移方程,并比较了不同背包问题的处理差异,如物品/背包遍历顺序对结果的影响。

2025-09-12 20:20:24 458

原创 Leetcode贪心算法

摘要: 划分字母区间(763):通过记录每个字母的最后出现位置,动态维护当前区间的右边界,当遍历到右边界时记录区间长度并更新左边界,实现字母分区的优化算法。 合并区间(56):先按左边界排序,然后逐个比较当前区间与结果集中最后一个区间的关系,若有重叠则合并右边界,否则直接加入结果集,最终返回合并后的区间数组。 单调递增数字(738):从右向左遍历数字各位,当发现递减时前一位减1并标记位置,最后将该位置后的所有位设为9,确保得到小于等于原数的最大单调递增数字。

2025-08-27 18:56:34 443

原创 数据结构与算法【冒泡排序 快速排序 】

如此循环开始第二轮比较最后结果:看这幅图片冒泡排序的核心思想是将相邻元素进行比较,想排成升序就把小的元素向前放置,排成降序就将大的元素向前放置。那既然提到排序我们这里用到for循环遍历数组,在利用第二层for循环把轮数进行把控。那我们这里应该想到一种情况就是如果这个数组他本身就是有序的那我再用算法对他进行排序那岂不是很浪费资源。

2024-09-05 22:05:01 332

原创 数据结构与算法简介

数据结构是计算机存储和组织数据的一种方式。数据结构就是把数据组织起来,为了更方便地使用数据我们为了解决问题,需要将数据保存下来,然后根据数据的存储方式来设计算法实现进行处理,那么数据的存储方式不同就会导致需要不同的算法进行处理。我们希望算法解决问题的效率越快越好,于是我们就需要考虑数据究竟如何保存的问题,这就是数据结构。

2024-09-01 15:00:08 567

原创 使用VMware Workstation pro 创建一台虚拟机

新建一台虚拟机就相当于是买了一台电脑可以装你想要使用的操作系统比如 Windows Mac Centos 在这里我们装的是CentOS操作系统(大家按照如下的步骤操作即可)

2024-07-26 13:33:57 604

原创 【数据结构与算法】:通讯录项目的实现(续上一篇)

在这里我们还是分为三个文件 Contact.h Contact.h Test.c 文件。分别存放通讯录的头文件,源文件,和测试通讯录的功能。

2024-04-21 20:22:37 829 1

原创 【数据结构与算法】:用C语言实现顺续表

在这里我们就可以定义一个结构体名字就叫SeqList也就是顺续表的意思,在里面用指针去定义上我们的一个数组为int类型的也就是存储我们的整形变量,和一个size也就是数组的大小和一个capacity数组存储数据的大小。插入数据,我们在方法中要设计三个参数,第一个是ps用于接受顺续表,第二个是插入数据的位置也就是pos,第三个是我们即将要插入的数据。删除数据就比插入数据少了一个参数。尾部删除还是比较容易的,这里我们还是需要保证指针的一个有效性和我们的数组大小不可以为0,然后对顺序表的大小进行--就可以了。

2024-04-16 21:53:30 1024 1

原创 实现C语言库函数的模拟实现

C语言模拟实现字符串相关的函数

2024-03-18 16:55:03 454

原创 Java学习:环境的安装及其idea的使用方法和快捷键等操作

步骤一:点击右上角的三角。

2024-03-13 20:51:01 976 1

原创 评委打分题目

在歌唱比赛中有6个评委给选手打分,分数范围是0到100之间的整数。选手最终得分是:去掉最低分和一个最高分然后把剩下的4个成绩计算平均值。

2024-02-26 19:07:32 261 1

原创 喝汽水问题(C语言实现)

首先题目给出了单价和钱数,也就是说我的20元能够买20瓶汽水,而20瓶汽水又对应20个瓶子,2个瓶子对应1瓶汽水,所以我们需要计算瓶数,将瓶数转化为钱数,方便计算。每次用瓶子换汽水都会又有新的瓶子,直到瓶子数量小于2就不能再换了。通过观察上面的结果我们不难发现,喝汽水的瓶数总是等于我们的输入钱数*2-1,。公式为:money*2-1。可以总结为以下的代码。喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以喝多少汽水(编程实现)。

2024-01-24 17:42:45 586

原创 经典算法:使用二分查找返回一个数组的下标

首先二分查找使用的前提是一定要是有序的数据这样使用二分查找才能更加高效。就拿我们这个题目举例首先我们定义一个数组里面存放1到10的数字。比如我输入9,程序就会返回9的下标也就是8(因为我们的数组是从0开始的)。那我们写一个函数来实现这样的效果。首先我们在主函数里面去定义数组然后调用函数将我们的数组名,数组大小,要查找的下标都传递过去。用search函数接收。然后,定义左下标为0,右下标为数组元素个数-1(因为数组的末尾是\0,所以要减掉)。

2024-01-18 20:09:31 753 1

原创 C语言实现猜数字游戏(1到100之间的猜数字)(巩固基本语法)

当用户选择1开始游戏后在屏幕上会提示您还有多少次机会,以便用户更好的进行衡量,剩下的如果玩家猜的数字小于随机生成好的ret就会提示猜小了,大于ret就会提示猜大了,剩下的一种情况就是猜对了(如果猜对了就会提示恭喜,猜对了)在这个时候我们应该用break跳出循环立即终止程序,否则会出现错乱现象。也就是说只要种子在变化,生成的随机序列就是变化的,种子是随机的,rand的随机数就是随机的。一个游戏或者一个业务会有许多的需求我们会把不同的功能写在不同的函数里面,等需要的时候就去调用这个函数。

2024-01-14 19:27:43 1237 1

原创 实现乘法口诀表

首先我们应该明白一个事情,就是我们的乘法口诀表是从上到下依次递增1个的(请看一下例子)。就拿1*2 2*2来举例子这一行最大就是2*2,不会比这个再大了。利用这个特点第二层的for就要小于等于i因为第一层是i最大也不会超过他的本身。那个printf语句最好是把j放在前面把i放在后面,因为我们的乘法表习惯是小的数字在前面大的数字在后面。首先拿到这道题目我们应该分析既然要实现乘法口诀表,那就要提取出1到9的数字(当然也可以不是9*9的)在这里我们选择使用for循环,而且是双层,只有这样才能实现我们的打印。

2024-01-12 19:52:17 791 1

原创 打印100到999之间的水仙花数 和 判断一个数是不是水仙花数

水仙花数是指一个 3 位数,它的每个数位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153。

2024-01-10 21:46:44 613

原创 C语言实现1到100的累加和

拿到这个题目,我们首先想到的是先提取出1到100的数字。那既然是实现累加和,也就是说我们要初始化一个变量为0(假设sum=0)然后把1到100的数字依次加到里面去。最后再把我们的sum进行一个打印就可以把结果呈现出来。这就是我们的大体思路。C语言有三种循环结构,没有哪一种是最好的。在这里我们用三种方法依次求解。

2024-01-09 16:32:34 1159

原创 编写程序数一下 1到 100 的所有整数中出现多少个数字9

拿到个题目我们的第一思路就是要找出1到100之间的数字,那不难解决我们利用for循环即可。如果是9,就++(这里需要定义一个为0的变量sum)。最后对我们的sum进行打印即可。接下来就是判断,题目让我们找出有多少个数字9,那我们就把一个数字的各个位都提取出来,

2024-01-08 20:33:14 402 1

原创 自我介绍!

学习路径:打算先学习一门计算机语言比如c语言和数据结构与算法,再刷一些题目,然后去参加一些竞赛比如蓝桥杯,如果有机会进入acm校队就更好了(不过那都是后话,先把自己手中的事情都做到再考虑)。对于计算机的学习:因为现在刚刚大一,学校里面的课也比较多,目前打算每天花在编程上2个小时左右(如果假期的话预计每天用4个小时学习编程)。最后说说最想进入的一家IT公司吧:字节跳动(因为张一鸣是我的偶像,看过他的一些讲话,觉得他的思维很缜密而且很有自己的想法)。编程的目标是成为一名优秀的程序员。越努力,越幸运,永不言弃。

2023-11-19 22:50:14 118

空空如也

空空如也

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

TA关注的人

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