自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【日耕一题】7. 循环右移(2026第17届蓝桥杯C++B组省赛 C 题)

本文解析了2026年蓝桥杯省赛C题"循环右移"的解题思路。题目要求找出满足特定条件的整数数组数量,关键在于理解"任意连续子数组循环右移后不变"这一条件。通过分析最小子数组(长度为2)推导出数组所有元素必须相等的结论,最终问题简化为计算区间[X,Y]内的整数个数(若X≤Y)。需注意数据范围(使用long类型)和边界情况(X>Y时结果为0)。解题核心在于从简单子问题入手推导全局性质,避免被数组长度N等无关参数干扰。

2026-06-23 00:31:09 274 5

原创 【日耕一题】6. 数字反转(NOIP2011 普及组 / 洛谷 P1307)

本文介绍了NOIP普及组经典题目"数字反转"的数学解法。重点讲解了数位拆解技巧(取模+除法循环)和三个关键点:1.符号隔离处理(先转正数后还原符号);2.前导零自动消除原理(通过累加拼接实现);3.零值兼容性处理。文章提供了完整的Java代码实现,并通过逐步执行示例演示了算法流程,最后对比了字符串反转的替代方案,强调数学解法对编程思维的锻炼价值。该解法适用于所有整数反转问题,核心在于掌握取模和除法操作进行数位处理的基本功。

2026-06-20 15:05:42 282 7

原创 斐波那契数列的 N 种解法:从递归到动态规划的优化之路【算法思考】

先统一定义,避免歧义不同教材的起点不一样,有的从第 1 项开始算,有的从第 0 项开始,我们全文统一标准:第 0 项:F (0) = 0第 1 项:F (1) = 1递推公式(n ≥ 2):F (n) = F (n-1) + F (n-2)简单说就是:从第三项开始,每一项都等于前两项之和。我们的目标是,输入整数 n,输出第 n 项斐波那契数的值。先写出最朴素的暴力解法,找到性能瓶颈发现重复计算 → 加缓存备忘录(记忆化搜索)摆脱递归栈限制 → 改成自底向上迭代(动态规划)

2026-06-16 18:32:13 1132 11

原创 【日耕一题】5. 青春常数(17届蓝桥杯C++B组第一题)

本文解析了一道蓝桥杯填空题,要求将16位整数N=2026202520242023拆分为满足x+y=N且0≤x<y的整数对(x,y)的数量。通过数学推导(不等式转化与奇偶分析),将问题转化为单变量取值范围计算,无需暴力枚举。关键点包括:数学转化:代入y=N-x后,x的范围为0≤x<N/2,总对数取决于N的奇偶性(奇数:(N+1)/2;偶数:N/2)。数据类型:N超出int范围,需用long存储(常量加L后缀)。结果:N为奇数,直接套用公式得1013101260121012对,经小规模验证正确。

2026-06-14 22:04:01 465 8

原创 二分查找没你想的那么简单:从模板到边界问题全拆解【算法思考】

二分查找算法核心解析:掌握两种标准模板与边界处理技巧 摘要:本文深入剖析二分查找的核心思想和常见问题。二分查找的本质是基于单调性通过区间排除法实现高效搜索,关键在于严格遵循区间定义规则。文章详细介绍了两种标准模板(左闭右闭和左闭右开)的实现细节与适用场景,重点拆解了导致死循环和越界的四大边界问题:1)循环条件选择(<=或<);2)边界更新规则(mid或mid-1);3)防溢出计算技巧;4)处理left=mid时的向上取整策略。通过明确区间定义与保持逻辑一致性,可有效解决90%的二分查找边界问题。

2026-06-13 00:18:19 432 8

原创 【日耕一题】4. 较为复杂情况下的求和

本文介绍了如何使用Java的Scanner类处理混合输入中的整数求和问题。核心方法是利用Scanner的智能分词功能配合hasNextInt()和nextInt()方法,实现自动跳过非整数元素并累加有效整数。文章详细解析了代码执行流程,通过样例"123a45"的分步演示,展示了如何正确识别整数(如"123")而跳过非整数(如"a"),最终输出累加结果15。同时强调必须用next()消耗无效token避免死循环,并提供了处理含负数和空格的复杂输入示例

2026-06-09 20:42:22 281 10

原创 零基础带你入门 Java(第八章:“抽象类和接口(上)“)

本文是Java面向对象编程第八章的学习内容,主要讲解抽象类和接口这两个核心概念。文章从实际案例出发,首先介绍了抽象类的定义、语法规则和6个核心特性,重点阐述了抽象类强制子类实现方法、代码复用和实现多态的三大作用。然后详细讲解了接口的语法规则、7个核心特性和多接口实现机制,通过USB接口等生动例子说明接口作为"纯规范"的特点。最后对比了抽象类和接口的关键区别:抽象类描述"是什么"(is-a),接口描述"能做什么"(can-do)。文章强调接口的多继承

2026-06-07 21:20:13 286 10

原创 你真的会用位运算符吗?【算法思考】

文章摘要 本文系统讲解位运算的核心知识与应用技巧。首先阐述位运算原理(直接操作二进制位,效率远超普通运算),并详解原码、反码、补码的转换规则(正数三码合一,负数需按步骤处理)。重点解析7种基础位运算符(&、|、^、~、<<、>>、>>>)的机制,并提炼7大实战技巧: 用x&1高效判断奇偶; 通过x&(x-1)==0判定2的幂; 消去二进制末位1; 获取末位1的值; 统计1的个数; 异或找数组中唯一数; 无临时变量交换两数。 附速查表与场景对比

2026-06-05 22:45:10 432 13

原创 【日耕一题】3. 通过键盘输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

/ 四个计数器,分别统计四类字符,初始值必须是0// 统计英文字母个数// 统计数字个数// 统计空格个数// 统计其他字符个数为什么初始值必须是 0?不初始化不行吗?初始值是 0:第一个符合条件的字符 + 1,结果就是 1,完全正确如果不初始化:Java 局部变量没有默认值,编译直接报错如果初始值写成 1:最后结果会多算 1,统计错误✅ 所有计数器类变量,初始值永远写 0!nextLine()读取带空格的整行字符串,避坑charAt()或转字符数组,逐个取字符。

2026-06-02 21:25:15 339 17

原创 零基础带你入门 Java(第七章:“多态”)

同一个行为,作用在不同的对象上,产生完全不同的表现结果,就是多态。把父类引用强制赋值给子类类型的变量,就是向下转型,必须手动强转。子类类型 变量名 = (子类类型) 父类变量;大范围 long 强转小范围 int,有风险。好啦,多态的所有核心内容就到这里,我们来做个最终总结:多态本质:同一个行为,不同对象有不同表现多态三前提:继承、重写、父类引用指向子类对象访问规则:成员变量编译运行都看左,成员方法编译看左、运行看右向上转型自动转,统一调用标准,提升扩展性;

2026-05-31 20:10:27 440 13

原创 【日耕一题】2. 面向对象 Java 基础:构造方法与 toString

本文详细讲解了一个Java面向对象基础编程题,要求定义一个Person类并实现相关功能。主要内容包括: 题目要求:定义Person类,包含私有属性name、age、gender、id;实现无参构造和有参构造;重写toString方法;主方法实现对象创建和逆序输出。 关键知识点: 封装与private关键字 构造方法(无参/有参) toString方法重写 对象数组的逆序输出 实现步骤: 定义私有属性 编写构造方法 生成getter/setter 重写toString 主方法实现输入处理和对象操作 重点注意事

2026-05-29 15:31:31 335 10

原创 【日耕一题】1. 图书类:声明图书类,记录图书总册数,利用静态变量赋值

本文介绍了Java中静态变量(static)的经典应用案例——图书管理系统。通过声明图书类Book,使用静态变量nextId实现自动编号和count统计总册数。关键点包括:1)静态变量属于类而非对象,所有实例共享;2)构造方法中实现编号自增和总数统计;3)主方法创建对象数组并输出信息。完整代码展示了如何用static实现自动编号(1,2,3...)和全局计数,同时指出了常见错误:将计数器定义为实例变量会导致统计失效。该案例演示了静态变量在面向对象编程中的典型应用场景。

2026-05-26 14:30:21 507 13

原创 关于蓝桥杯,赛前最好搞懂的一些知识(java组)

/ 定义存储Integer类型的动态数组// 定义时直接初始化元素万能导入java.io.*;三行覆盖所有考点,无性能影响。动态数组:用ArrayList替代静态数组,自动扩容,掌握增删查基础操作。排序函数处理数组,处理 List,支持升序 / 降序和指定区间排序。取整运算向上取整,向下取整,直接调用无需手写。数论基础:手写辗转相除法求 GCD,再推导 LCM(先除后乘防溢出);也可使用BigInteger自带方法。位运算技巧。

2026-05-24 21:29:55 519 10

原创 零基础带你入门 Java(第六章:“继承”)​

本文系统讲解了Java继承的核心知识,主要包括以下内容: 继承概念与作用 通过extends实现代码复用 子类继承父类非private成员 解决代码冗余问题 继承核心机制 super关键字的三种用法 子类构造方法必须优先初始化父类 继承下的代码块执行顺序(重点) 继承相关特性 protected访问权限设计 final关键字对继承的限制 Java单继承原则 代码复用方式对比 继承(is-a)与组合(has-a)的区别 各自适用场景分析 重要注意事项 同名成员访问规则 构造方法调用规范 初始化顺序(面试重点)

2026-05-22 17:32:11 493 11

原创 从此搞懂编程必学的六大排序思想 (下)【算法思考】

本文深入讲解三大高级排序算法:快速排序、归并排序和堆排序。快速排序采用分治思想,通过基准值分区实现高效排序,需注意随机基准优化避免退化;归并排序通过拆分合并保证稳定O(nlogn)性能,是大数据排序的首选;堆排序利用堆结构特性实现原地排序,适合TopK问题。文章对比了六大排序算法在不同数据量下的性能表现,并给出应用场景指南:快排适合日常通用排序,归并适合大数据和稳定排序需求,堆排序适合TopK问题。通过原理讲解、手算演示、代码实现和优化技巧,帮助读者全面掌握高级排序算法的核心要点。

2026-05-19 17:38:10 548 13

原创 零基础带你入门 Java(第五章:“类和对象进阶篇”)

封装就是把类的属性藏起来,不让外面直接访问,只通过我们提供的方法来访问。就像你家里的东西,不会随便让别人碰,别人要拿东西,得通过你才行。封装是面向对象三大特性的第一个(另外两个是继承、多态),是 Java 最核心的思想之一。包就是 Java 里的文件夹,用来把不同的类分门别类放好,就像你电脑里的文件夹,把文档、图片、视频分开存。那有人就问了:为什么要有包?所有类放一起不行吗?当然不行!类多了会乱,找类找不到。

2026-05-17 15:43:45 533 14

原创 Bug找不到?从零开始学会IDEA 如何 进行 debug 调试!

先打断点,再 Debug 运行,断点打在有代码的行最常用 F8 步过,一步一步往下走;想进方法用 F7,看完用 Shift+F8 步出循环用条件断点,找空指针用异常断点,不用加 System.out.println 用日志断点变量面板看所有值,还能临时修改变量值计算表达式 Alt+F8 能算任何东西,非常强大debug 是程序员最重要的技能之一,没有之一。不管什么问题,一步一步看,总能找到原因。诸位共勉,无限学习!

2026-05-15 19:23:55 519 10

原创 零基础带你入门Java(第四章:“类和对象 入门篇“)

在讲类和对象之前,我们得先搞明白什么是面向对象。这个很简单理解,面向对象就是把现实世界中的事物,抽象成程序中的 "对象"。比如你要写一个学生管理系统,那学生就是一个对象,学生有姓名、年龄、学号这些属性,还有学习、吃饭、睡觉这些行为。那有人就问了:那和我们之前学的有啥区别啊?区别大了去了,之前我们写代码都是想到啥写啥,一步一步来,这叫面向过程。而面向对象呢,是先把事物抽象出来,再用这些抽象出来的东西去做事。类就像是图纸或者月饼模子,它规定了房子应该有什么结构,月饼应该是什么形状对象就像是。

2026-05-12 15:39:48 461 9

原创 零基础带你入门Java(第三章:“方法”)

方法,说白了就是一段可以重复使用的代码块,它能完成某个特定的功能。你可以把它理解成一个 "功能盒子",给它一些输入,它就给你一些输出(或者干脆不给输出,只干一件事)。举个栗子:你想做蛋炒饭,每次都要写一遍 "洗锅→倒油→打鸡蛋→放米饭→放盐→翻炒" 这一大串步骤吗?当然不用!你可以把这些步骤打包成一个 "做蛋炒饭" 的方法,以后想吃了,直接调用这个方法就行!Java 方法的基本语法长这样:修饰符 返回值类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) {// 方法体。

2026-05-05 21:45:35 468 10

原创 从此搞懂编程必学的六大排序思想(上)【算法思考】

冒泡排序:相邻两两比,大数往后冒;加交换标记可优化,有序数组能提前结束;稳定,最好复杂度 \(O(n)\),只是交换太多,实际开发基本不用,适合入门理解。选择排序:每轮找最小值,换到最前面;完全没法优化,永远 \(O(n^2)\);不稳定,交换少但毫无实用价值,只用来学思路。插入排序:模仿打牌理牌,往后挪、往前插;稳定、最好 \(O(n)\),缓存友好、小数据跑得飞快;三个里最实用,Java 官方小数组排序底层就用它。诸位共勉,无限学习!PS:下篇制作中~

2026-05-02 22:15:11 668 7

原创 零基础带你入门Java(第二章:“运算符与数组”)

之前第零章我们说,变量是一个小盒子,只能存一个数据,而数组就是一个大盒子,能存很多同类型的数据,你只要给这个大盒子起个名字,就能用里面的所有数据了,不用定义一堆小变量,是不是很方便?对比 C 语言,是不是很熟悉?Java数组定义:int[] arr = new int[5];C数组定义: int arr[5];Java 里也支持 C 的那种写法int arr[5],不过我们一般推荐int[] arr,这样更清晰,一眼就能看出来这是个 int 类型的数组。

2026-04-28 21:54:12 457 9

原创 零基础带你入门Java(第零章:“梦开始的地方”)

什么是变量?其实很简单,你可以把它理解成一个 “另一个盒子”,你可以把数据存到这个盒子里,给盒子起个名字,以后你要用这个数据的时候,直接叫这个名字就可以了,不用每次都写一遍数据。比如你要存你的年龄 19,你就可以做一个叫 age 的盒子,把 19 放进去,以后你要用年龄的时候,直接用 age 就可以了,这就是变量。对比 C 语言,是不是很熟悉?C 里你定义int age=19;,Java 里也是一模一样的写法,学过 C 的同学一下子就懂了!

2026-04-26 22:11:19 421 7

原创 “汉诺塔问题”到底如何理清楚?【算法思考】

这个故事的话,点进来的应该多多少少都知道,所以我们主要针对如何去理解这个问题,这个部分不做大篇幅介绍。传说印度教的神庙里,有一块黄铜板,上面插着三根宝石针,最开始的针上叠了 64 个金盘子,从上到下越来越大。僧侣们日夜不停地移动盘子,传说当所有盘子都移到最后一根针上的时候,世界就会毁灭。这就是汉诺塔问题的由来,而它的规则其实很简单:1.有三根柱子,N 个大小不一样的盘子,一开始所有盘子都按从小到大的顺序叠在第一根柱子上2.每次只能移动一个盘子,而且只能拿柱子最顶端的那个盘子3.

2026-04-22 20:25:26 553 10

原创 零基础带你入门Java(第一章:“输入与输出”)

输出即输出我们想要的语句等元素。在C中我们知道输出即为printf("%d",a)形式的样子,而在Java中类似:Java输出:System.out.println(a);C输出: printf ("%d",a)经过我们的对比可以发现,两者都出现了”print“这个词,不过C是+f,Java是+ln。这就是基础的Java输出语句,对于Java的输出具体有哪些内容,现在我们来详细讲讲。Java 输出与 C 语言输出逻辑相似,但语法各有特点。

2026-04-01 12:00:00 435 8

原创 带你入门C语言分支循环语句(附带实战小游戏)

本文介绍了C语言中分支语句和循环结构的使用技巧与常见问题。重点讲解了if-else语句中=和==的区别,建议将常量写在前面以避免错误;switch语句要注意break的使用;for、while和do-while三种循环的适用场景。文章通过猜数字游戏示例演示了分支和循环的综合应用,并指出新手常见错误:赋值与判断混淆、漏写break、循环条件更新不当等。最后强调多实践的重要性,建议通过修改示例代码来巩固学习效果。

2026-03-03 13:49:01 60

原创 我的第一篇博客:关于编程,我的起点与小计划

新人介绍

2026-03-02 10:53:57 786

空空如也

空空如也

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

TA关注的人

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