算法刷题
敲代码的嘎仔
顺天时,承因果,今日方知我是我!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LCR 024. 反转链表
摘要:本文介绍了单链表反转的迭代算法实现。通过初始化prev、curr、nextTemp三个指针,逐步修改节点指向关系完成反转。关键步骤包括保存下一个节点(curr.next)、反转当前节点指向(curr.next=prev)、移动指针。以1->2->3->null为例,经过三次循环后链表变为3->2->1->null。算法时间复杂度O(n),空间复杂度O(1)。重点解释了初始循环时curr.next=prev如何将头节点指向null的过程,即通过指针赋值使节点1成为新链原创 2025-11-24 22:32:37 · 235 阅读 · 0 评论 -
牛客算法基础noob46 约瑟夫环
摘要:本文实现了一个经典的约瑟夫环问题求解程序。给定n个人围成一圈,从第k个人开始报数,数到m的人出局,直至只剩一人。程序使用ArrayList动态存储人员编号,通过循环计算淘汰位置(current+m-1)%剩余人数,利用ArrayList的remove操作高效处理人员淘汰过程。最终输出幸存者的原始编号,时间复杂度为O(n²)。程序支持输入参数n(2-100)、k(0-n-1)、m(1-100),通过模运算实现环形计数逻辑。原创 2025-09-18 18:11:17 · 207 阅读 · 0 评论 -
牛客算法基础noob73 三角形面积
摘要:本文介绍了如何计算平面上三个不共线整数点构成的三角形面积,提供了完整的Java实现代码。程序通过创建Point和Triangle类来存储坐标信息,使用几何方法计算面积:当两边为竖直线时特殊处理,否则通过斜率和点到直线距离公式计算底边和高。重点解释了代码中"T.c.x"的含义,这是通过链式访问对象成员的方式获取三角形第三个顶点的x坐标,并详细说明了这种写法的合法性原理。程序最终输出保留两位小数的面积结果。原创 2025-10-15 17:16:40 · 460 阅读 · 0 评论 -
牛客算法基础noob70 两点间距离
这篇文章介绍了一个Java方法,用于计算二维平面上两点之间的欧几里得距离。方法接收两个Point对象作为参数,每个对象包含x和y坐标。通过提取两个点的坐标值,使用数学公式√[(x₂-x₁)² + (y₂-y₁)²]计算距离,最后返回double类型的距离值。该方法封装了基本的坐标提取和距离计算逻辑,适用于简单的二维几何计算场景。原创 2025-10-11 15:41:37 · 107 阅读 · 0 评论 -
牛客算法基础noob69 最厉害的学生
该Java程序用于找出总分最高的学生信息。输入N个学生的姓名和三科成绩,计算总分后比较,输出总分最高者(若总分相同则保留输入顺序靠前的)。程序使用Scanner读取输入,将第一个学生设为初始最优值,随后遍历比较更新最优值。最后用printf格式化输出结果,其中格式字符串"%s%d%d%d"分别对应姓名和三个成绩。关键点在于理解printf的格式说明符(%s匹配字符串,%d匹配整数)与参数列表的对应关系。原创 2025-10-11 00:29:39 · 648 阅读 · 0 评论 -
牛客算法基础noob68 凯撒解密
摘要:本文介绍了一个用于凯撒解密的Java函数,可将加密后的字符串还原为原始表白信。该函数接收加密字符串和位移次数n,通过将每个字母向后移动(26-n)步来实现反向解密(取模26处理循环)。具体步骤包括:计算有效位移、字符索引转换、反向位移运算及结果拼接。其核心思想是将"向前移n步"转化为等效的"向后移26-n步",与加密逻辑保持一致,便于统一计算。该解法时间复杂度为O(n),适用于小写字母字符串的解密需求。原创 2025-10-10 15:49:03 · 228 阅读 · 0 评论 -
牛客算法基础noob61 字符串操作
摘要:该题目要求处理一个字符串的多次字符替换操作。给定长度为n的字符串和m次操作,每次操作在指定区间[l,r]内将所有c1字符替换为c2。程序通过将字符串转为字符数组进行修改,最后输出结果字符串。关键点包括:1)处理1-based到0-based索引转换;2)遍历指定区间进行字符替换。Java实现采用Scanner读取输入,通过字符数组直接修改提高效率。时间复杂度为O(m*n)。原创 2025-10-03 21:25:46 · 379 阅读 · 0 评论 -
牛客算法基础noob60 牛牛的考试
文章摘要:牛牛根据"三长一短选最短、三短一长选最长、参差不齐选C"的规则答题。程序处理T道题目,每道4个选项,通过统计选项字符串长度特征自动选择答案:当有唯一最短选项时选最短,唯一最长时选最长,否则选C。该算法能帮助牛牛避免被旺仔哥哥惩罚。原创 2025-10-02 13:55:45 · 299 阅读 · 0 评论 -
牛客算法刷题noob57 凯撒加密
摘要:本文描述描述了一个密码生成问题,要求将给定的小写字母字符串每个字符向后错位n首都循环移位(z后是a)。输入 rechazadosn和字符串s,核心输出错位后的密码。解决方案使用Java实现,通过函数计算每个n次错位后的字符位置相对偏移,并通过模26运算确保循环处理。原创 2025-10-01 21:56:41 · 216 阅读 · 0 评论 -
牛客算法基础noob59 简写单词
文章摘要:定义了一种复合词简写规则,即提取每个组成单词的首字母并转为大写。输入一个由若干单词组成的复合词,输出其简写形式。输入规范包括单词数量、长度和分隔方式。输出要求将所有单词首字母大写后按原顺序连接。示例代码展示了Java实现方法:读取输入,分割单词,提取首字母并转换为大写后输出。原创 2025-10-01 21:54:13 · 295 阅读 · 0 评论 -
牛客算法基础noob58 无限长正整数排列字符串
这段Java代码实现了一个算法,用于查找由连续正整数拼接而成的无限字符串S中第n个字符。程序首先确定n所在的数字位数区间(1位、2位等),然后计算对应的具体数字,最后取出该数字的特定位置的字符。时间复杂度为O(logN),适用于n≤1000的情况。原创 2025-10-01 21:52:34 · 383 阅读 · 0 评论 -
牛客算法基础noob56 BFS
摘要:该Java程序实现了在给定字符串中查找不区分大小写的子串"Bob"首次出现位置的功能。程序首先检查字符串长度是否小于3,若是直接返回-1。否则将字符串转为小写,通过滑动窗口方式逐个检查连续三个字符是否为"bob",找到即返回起始下标。若遍历完未找到则返回-1,有效处理了边界条件和大小写问题。原创 2025-09-29 17:15:14 · 411 阅读 · 0 评论 -
牛客算法基础noob54 斗兽棋
摘要:代码实现了一个基于四种棋子(elephant、tiger、cat、mouse)克制关系的博弈游戏。当牛牛或牛妹的棋子能吃掉对方时分别输出"win"或"lose",否则输出"tie"。但代码存在字符串比较错误,应使用equals()方法而非==运算符来比较字符串内容。修正后能正确判断棋子的克制关系,如输入"elephant tiger"将输出"win"。原创 2025-09-27 12:15:04 · 207 阅读 · 0 评论 -
牛客算法基础noob53 年轻人不讲5的
【摘要】本文针对年轻人使用数字"5"的不当行为提出批评,要求将数字字符串中的所有"5"替换为""。题目要求处理长度不超过10^6的数字字符串,给出Java实现方案:通过Scanner读取输入,将字符串转为字符数组遍历,遇到'5'即替换为''后输出。该解决方案使用O(n)时间复杂度,能高效处理最大长度的输入字符串。原创 2025-09-27 12:12:24 · 195 阅读 · 0 评论 -
牛客算法基础noob52 扫雷
扫雷矩阵生成任务摘要本文档旨在明确扫雷矩阵生成任务的核心要求,具体如下:任务目标:根据初始扫雷矩阵(*表示地雷,.表示空白格)生成完整矩阵 —— 地雷位置仍输出*,空白格需计算并输出其周围 8 个方向(上、下、左、右及四对角线)的地雷总数。输入要求:先输入矩阵行数n和列数m(1≤n,m≤1000),后输入n行、每行m个字符(仅*和.,无空格)的初始矩阵。输出要求:输出n行完整矩阵,每行字符 / 数字紧凑无空格,行末无多余空格,空白格对应输出周围地雷数(0-8 的整数)。原创 2025-09-26 12:45:28 · 382 阅读 · 0 评论 -
牛客算法基础noob51 杨辉三角
本文介绍了杨辉三角形的数学特性及其Java实现方法。杨辉三角形的第i+1行对应二项式展开式(a+b)^i的系数,每个元素等于上一行同列与前列元素之和。示例展示了前4行:1、11、121、1331。通过Java代码实现时,使用二维数组动态分配每行空间,第一列和最后一列固定为1,中间元素通过递推公式计算。程序读取输入整数n后,构建并输出前n行杨辉三角形,数字间用空格分隔,行末无多余空格。该实现适合1≤n≤34的范围,体现了杨辉三角形的递推特性。原创 2025-09-23 20:44:05 · 481 阅读 · 0 评论 -
牛客算法基础noob50 矩阵转置
这是一个实现矩阵转置的Java程序。输入矩阵的行列数n、m,然后读取n行m列的矩阵数据。程序通过创建一个m行n列的转置矩阵,将原矩阵的行列互换存储。最后按转置后的格式输出结果,每个元素后跟一个空格,每行结束后换行。该程序适用于1≤n,m≤10的矩阵,元素范围在-10^9到10^9之间。核心算法是通过双重循环将原矩阵元素arr1[i][j]存储到转置矩阵arr2[j][i]的位置。原创 2025-09-22 16:11:09 · 249 阅读 · 0 评论 -
牛客算法基础noob49 上三角矩阵判定
本文介绍了一个判断n阶方阵是否为上三角矩阵的算法。上三角矩阵要求主对角线以下的所有元素均为0。算法通过双重循环遍历矩阵元素,重点检查行号大于列号的元素是否全为0。若发现非零元素则立即终止检查并返回"NO",否则在检查完成后返回"YES"。该解法的时间复杂度为O(n²),适用于n≤10的矩阵。核心思路是遍历矩阵下三角部分,只要发现非零元素即可判定为非上三角矩阵。原创 2025-09-21 20:56:48 · 299 阅读 · 0 评论 -
牛客算法基础noob47 校门外的树
这段Java代码解决了一个计算移除施工区域后剩余树木数量的问题。输入马路长度L和施工区域数M,接着读取M个施工区域的起止坐标。程序使用布尔数组标记被移除的树木位置,最后统计未被标记的位置数量即为剩余树木数。时间复杂度为O(L*M),空间复杂度为O(L)。关键点在于正确标记所有施工区间的位置,并准确统计剩余树木数量。原创 2025-09-19 21:37:33 · 294 阅读 · 0 评论 -
牛客算法基础noob45 记数问题
本文介绍了一个Java程序,用于统计数字x在1到n区间内所有整数中出现的次数。程序通过将每个整数转换为字符串,逐位比较字符来实现计数功能。输入为两个整数n和x,输出x在[1,n]范围内的总出现次数。该解决方案适用于1≤n≤10⁶和0≤x≤9的情况,通过双重循环遍历每个数字的每一位进行精确统计。原创 2025-09-18 16:42:44 · 524 阅读 · 0 评论 -
牛客算法基础noob44——数组计数维护
摘要:给定一个整数序列,维护两个变量S和cnt。遍历序列时,若元素≥k则累加到S;若元素为0且S≥1则消耗1单位S并增加cnt。最终输出cnt值。每组测试用例包含n、k和n个整数,处理T组数据后输出结果。原创 2025-09-18 16:09:57 · 362 阅读 · 0 评论 -
牛客算法刷题Day3——极差和方差
牛牛需要计算每张数学试卷上数字的极差和方差。程序接收若干组数据,每组包含n个整数。首先计算极差(最大值减最小值),然后计算方差(各数与平均数差的平方的平均值)。程序使用Java实现,通过遍历数组求极差,并利用流式计算平均值来简化方差的计算。输出格式为极差(整数)和方差(保留3位小数)。时间复杂度主要取决于遍历数组和计算平均值,整体高效。原创 2025-09-16 20:13:18 · 582 阅读 · 0 评论 -
牛客算法刷题Day2——镜像序列
这段Java代码实现了一个简单的数组逆序输出功能。程序首先创建一个大小为100的整型数组,然后通过循环读取用户输入的整数,遇到0时停止输入。所有非0输入会被存入数组,最后从最后一个元素开始倒序输出数组内容,每个数字后跟一个空格。该程序演示了基本的数组操作、循环控制和输入输出处理。原创 2025-09-13 11:56:15 · 107 阅读 · 0 评论 -
牛客算法刷题Day1——二位斐波那契数列
本文展示了一个使用动态规划解决网格路径问题的Java程序。该算法计算从n×m网格左上角到右下角的不同路径总数。程序通过初始化第一行和第一列为1(基础情况),然后利用状态转移方程dp[i][j] = dp[i-1][j] + dp[i][j-1](模1000000007)填充二维数组。以3×3网格为例,最终输出6种路径。该解法时间复杂度为O(n×m),空间复杂度为O(n×m),适合处理大规模网格问题。原创 2025-09-12 19:11:02 · 265 阅读 · 0 评论
分享