- 博客(141)
- 收藏
- 关注
原创 Unity实践----【动手】2.游戏场景UI与各个游戏对象
本文总结了游戏开发中UI面板与核心游戏对象的实现思路。主要包含:1)游戏面板与修塔面板的UI逻辑实现,包括血条显示、波数统计等功能;2)采用接口方式(如IHitted)处理对象间的交互,替代继承带来的复杂性;3)各类游戏数据(角色、关卡、僵尸等)的结构设计;4)核心游戏对象(玩家、摄像机、武器、僵尸、炮塔、基地)的实现细节,重点阐述了状态机控制、索敌算法、伤害计算等核心机制。作者反思了开发过程中的经验:合理规划功能优先级、敢于重构代码、保持设计文档更新,强调了完成比完美更重要的开发理念
2025-08-11 18:32:47
589
原创 LeetCode刷题记录----114. 二叉树展开为链表(Medium)
摘要:文章介绍了两种将二叉树展开为链表的算法。第一种是原地修改法(O(1)空间),通过将左子树插入右子树位置,并保持前序遍历顺序,具体步骤包括定位左子树最右节点、调整指针指向等。第二种是前序遍历+列表重构法(O(N)空间),先迭代生成前序节点列表,再重新连接节点。两种方法的时间复杂度均为O(N)。优化建议指出第一种方法可简化右子树保存步骤,直接连接后再移动左子树。文章强调处理树结构时需注意节点间关系,并比较了递归与迭代实现前序遍历的差异。
2025-08-10 19:58:11
893
原创 《Unity Shader入门精要》学习--高级篇--Unity中的渲染优化技术
本文粗略介绍了性能优化的原因和目的,以及CPU,GPU,带宽三个方向的性能影响与优化的思路与技术,同时还介绍了Unity中如何查看当前影响性能的因素的方法。
2025-08-10 17:15:06
931
原创 LeetCode刷题记录----230.二叉搜索树中第K小的元素(Medium)
本文介绍了在二叉搜索树中查找第K小元素的两种方法。第一种采用中序遍历递归实现,时间复杂度O(N),空间复杂度O(N)。第二种通过预处理建立节点数哈希表,实现O(H)时间复杂度的查找(H为树高),适用于频繁查询场景。文章还讨论了当树结构频繁修改时需要采用平衡二叉搜索树的优化思路。两种方法都利用了二叉搜索树中序遍历升序的特性,并根据不同应用场景提出了优化方案。
2025-08-09 17:36:11
964
原创 《Unity Shader入门精要》学习--高级篇--超级有用的噪声
本文主要介绍了Unity中利用噪声纹理实现特殊效果的Shader技术。首先讲解了Perlin和Worley两种噪声纹理的特点及应用场景。重点阐述了三种效果实现:1)消融效果通过噪声采样值与透明度测试结合,配合边缘颜色混合;2)水波效果使用GrabPass获取折射纹理,结合立方体贴图反射,通过菲涅尔系数混合;3)全局雾效在计算雾强度时加入噪声扰动。文章详细说明了每种效果的实现步骤,包括属性定义、顶点/片元着色器编写、参数传递等关键环节,并提供了动态控制脚本示例。
2025-08-09 16:03:34
1259
1
原创 LeetCode刷题记录----98.验证二叉搜索树(Medium)
本文介绍了两种验证二叉搜索树的方法:中序遍历法和递归法。中序遍历法利用二叉搜索树的中序遍历结果必然是升序的特性,通过Morris遍历实现O(1)空间复杂度。递归法则通过维护每个节点的上下界来验证,确保左子树所有节点小于根节点,右子树所有节点大于根节点。文章指出常见的递归错误(仅比较根节点与左右子节点),并给出正确解法。两种方法的时间复杂度均为O(N),中序遍历法空间复杂度更优。关键点在于:1)中序遍历结果必须严格递增;2)递归时需要正确传递上下界参数。
2025-08-08 20:13:30
883
原创 LeetCode刷题记录----108.将有序数组转换为二叉搜索树(easy)
本文介绍了将有序数组转换为平衡二叉搜索树的方法。核心思路是采用分治策略,每次选择数组中间元素作为根节点,递归构建左右子树。文中给出了两种实现方式:一种是先单独处理根节点,另一种是完全在递归函数中处理。优化后的代码更简洁,时间复杂度为O(logn),空间复杂度O(n)。文章还指出,由于中序遍历结果不唯一,可以选择中间偏左、偏右或随机位置作为根节点来构建不同的平衡树。最后总结了递归设计和二分搜索的注意事项,强调明确递归输入输出和避免重复元素处理的重要性。
2025-08-07 20:53:13
627
原创 LeetCode刷题记录----102.二叉树的层序遍历(medium)
本文介绍了二叉树的层次遍历实现方法。通过队列进行广度优先搜索,将根节点入队后循环处理:记录当前层节点数,出队访问节点值,并将非空子节点入队。优化点在于提前处理空节点边界条件,避免将空节点入队。算法时间复杂度和空间复杂度均为O(N)。关键点包括:1)使用队列实现BFS遍历;2)提前处理边界条件提升效率;3)通过记录每层节点数实现分层输出。该方法适用于需要按层处理二叉树节点的场景。
2025-08-06 19:43:18
321
原创 LeetCode刷题记录----543.二叉树的直径(easy)
本文探讨了计算二叉树直径的两种算法。初始解法采用层次遍历每个节点后递归计算子树深度,时间复杂度O(n²)。优化解法使用深度优先搜索,在遍历时同时计算节点深度和直径,将时间复杂度降至O(n)。关键思路是:直径等于某节点左右子树最大深度之和,通过DFS递归计算并更新最大值。比较发现,对于涉及树深度的问题,DFS更高效;而需要处理节点间层级关系时,BFS更合适。优化后的算法只需一次遍历即可完成计算,避免了重复操作。
2025-08-05 20:27:17
377
原创 LeetCode刷题记录----101.对称二叉树(easy)
本文探讨了判断二叉树是否对称的三种解法。第一种采用层次遍历+回文判断,逐层检查节点值的对称性;第二种优化队列空间利用,通过特定顺序存储相邻节点进行对称比较;第三种使用递归方法,通过比较左右子树的镜像关系来判断对称性。三种方法的时间复杂度均为O(N),空间复杂度也为O(N),其中第二种方法在空间利用上更优。文章强调了对树结构特征的观察和边界条件的处理,提供了从不同角度解决树对称性问题的思路。
2025-08-04 11:39:53
576
原创 《Unity Shader入门精要》学习--高级篇--最喜欢的非真实感渲染
本文介绍了非真实感渲染(NPR)的实现方法,重点讲解了卡通风格和素描风格的渲染技术。卡通风格通过轮廓线渲染、色调渐变着色和高光阈值处理三个关键步骤实现,使用双Pass渲染分别处理背面轮廓和正面着色。素描风格则利用六张预制的素描纹理,通过顶点着色器计算各纹理的混合权重,在片元着色器中进行采样混合。两种方法都通过特定的着色算法,实现了区别于真实感渲染的艺术效果,为游戏和动画提供了多样化的视觉表现手段。文章包含详细的Shader代码实现和效果展示,为开发者学习非真实感渲染提供了实用参考。
2025-08-03 16:28:20
1765
原创 LeetCode刷题记录----226.翻转二叉树(easy)
本文介绍了两种翻转二叉树的算法:递归法和广度优先搜索法。递归法通过交换每个节点的左右子树实现翻转,时间复杂度O(N),空间复杂度O(N)。广度优先搜索法使用队列逐层处理节点,交换其左右子节点,同样具有O(N)的时间空间复杂度。两种方法各有特点:递归法代码简洁但可能栈溢出;广度优先搜索适合处理大型树。文章指出,处理树的左右子树问题时,递归是最常用方法,而深度/广度优先搜索是解决树问题的基本思路。
2025-08-03 10:18:17
484
原创 LeetCode刷题记录----104.二叉树的最大深度(easy)
本文探讨了计算二叉树最大深度的两种方法:递归(深度优先搜索)和队列(广度优先搜索)。递归方法通过比较左右子树深度确定最大值,时间复杂度O(N),空间复杂度O(height)。广度优先搜索使用队列逐层遍历,每处理完一层深度加1,时间和空间复杂度均为O(N)。两种方法各具特点,深度优先简洁但递归有栈溢出风险,广度优先直观但需要额外空间。根据具体场景选择合适方法,递归适合简单实现,队列适合大规模数据处理。
2025-08-02 11:58:04
232
原创 《Unity Shader入门精要》学习--高级篇--深度和法线纹理:“我来助你”
本文介绍了Unity中深度与法线纹理的原理及应用方法。主要内容包括:1. 深度和法线纹理的获取原理,包括纹理生成方式、采样解码方法;2. 基于深度纹理的运动模糊实现,通过计算前后帧像素位移速度来混合颜色;3. 使用深度纹理制作全局雾效,利用世界空间坐标计算雾强度并进行颜色插值;4. 利用深度+法线纹理进行边缘检测,采用Roberts算子比较对角线像素差异;5. 总结了深度纹理的空间转换、平台差异处理等核心技术要点。这些技术为屏幕后处理效果提供了重要实现手段,具有广泛的应用价值。
2025-08-01 23:09:09
1462
原创 LeetCode刷题记录----146.LRU缓存(Medium)
本文介绍了LRU缓存算法的实现思路和具体代码实现。通过分析题目需求,确定需要快速查询和删除最久未使用元素两个核心功能。采用哈希表实现O(1)查询,双向链表实现O(1)删除和更新操作。文章详细阐述了初始化、get、put三个主要方法的实现逻辑,并配套实现了moveToTail、outNode、addToTail等辅助方法。强调在实现过程中应先规划好整体逻辑再处理细节的方法论,以及合理使用数据结构来满足不同操作的时间复杂度要求。最终的实现方案兼顾了查询效率和动态更新能力,为LRU缓存问题提供了标准解决方案。
2025-08-01 11:00:02
1089
原创 LeetCode刷题记录----23.合并K个升序链表(Hard)
本文探讨了合并K个有序链表的三种解法:1. 普通递归法:每次合并两个链表,时间复杂度为O(k^2n);2. 分治递归法:采用两两分组合并策略,时间复杂度优化至O(knlogk);3. 最小堆法:利用优先队列动态获取最小值节点,时间复杂度同样为O(knlogk)。文章详细分析了各方法的实现思路、时间空间复杂度比较,并提供了Python代码实现,重点强调了分治法和最小堆在优化递归效率方面的优势。
2025-07-31 20:54:39
1322
原创 LeetCode刷题记录----94.二叉树的中序遍历(easy)
本文探讨了二叉树中序遍历的三种实现方法:递归、迭代和Morris算法。递归方法直接遵循中序遍历定义,简洁但存在栈溢出风险;迭代方法使用栈模拟递归过程,优化后更直观;Morris算法通过临时修改树结构实现O(1)空间复杂度。三种方法时间复杂度均为O(N),但空间效率依次提升,其中Morris算法最为高效,适合内存受限场景。文章详细分析了各方法的实现思路和代码逻辑,并对比了它们的优缺点,为不同需求下的算法选择提供了参考依据。
2025-07-30 23:48:56
342
原创 Unity实践----【动手】1.主菜单UI与数据管理器
本文记录了2025年7月30日的游戏开发日志,主要完成了主菜单场景的UI系统实现。内容包括:1) UI管理器的单例模式实现,负责面板的创建、隐藏和获取;2) 基础面板类设计,提供统一的淡入淡出效果;3) 具体面板实现(主菜单、设置、关于、角色选择、关卡选择等);4) 数据管理系统(音乐、玩家、角色和关卡数据);5) 辅助系统(音效管理、摄像机移动)。开发过程中遵循"面板拼接-数据准备-逻辑编写"的工作流,强调代码可读性和功能完整性。下一步将转向游戏场景的UI实现和游戏逻辑开发。
2025-07-30 21:12:32
1119
原创 算法学习--【排序】归并排序
本文介绍了归并排序的两种实现方式:递归法和迭代法。归并排序采用分治思想,将数组不断分解为子数组进行排序再合并。递归法通过中间索引拆分数组,递归处理子数组后合并;迭代法则从单元素开始,逐步扩大合并范围。两种方法的时间复杂度均为O(nlogn),空间复杂度O(n)。文章详细讲解了合并操作的实现细节,包括指针比较和剩余元素处理,并分析了递归终止条件和迭代过程中的边界处理要点,强调分治思想在算法中的重要性。
2025-07-29 12:55:03
988
原创 Unity学习--【数据持久化】PlayerPrefs与反射结合使用(下)
本文总结了Unity中数据持久化技术PlayerPrefs与反射结合使用的方法。重点介绍了如何利用反射特性处理复杂数据类型:1. 使用IsAssignableFrom判断列表/字典类型;2. 通过GetGenericArguments获取泛型参数;3. 递归调用SaveValue/LoadValue方法实现列表/字典的序列化与反序列化;4. 处理自定义类对象的方法。文章还提出了数据加密的思考方向,并总结了反射API在数据持久化中的关键应用场景,包括类型判断、泛型处理以及递归逻辑的实现。
2025-07-28 21:16:35
1025
原创 LeetCode刷题记录----147. 对链表进行插入排序(medium)
文章摘要:本文介绍链表插入排序的实现方法。核心思路是通过tail指针分隔已排序和未排序部分,对于当前节点:若值大于等于tail则直接作为新tail;否则在已排序部分寻找合适插入位置。算法使用哑节点简化操作,时间复杂度O(n²),空间复杂度O(1)。关键点在于正确处理两种情况的边界条件,优先处理简单分支使逻辑更清晰。
2025-07-28 10:54:16
413
原创 《Unity Shader入门精要》学习--高级篇--丰富的屏幕后处理效果
本文介绍了Unity中常见的屏幕后处理效果实现方法,包括亮度/饱和度/对比度调整、边缘检测、高斯模糊、Bloom效果和运动模糊。文章详细讲解了它们的原理和实现步骤:通过OnRenderImage和Graphics.Blit等API对渲染完成的图像进行二次处理;使用卷积核进行边缘检测和高斯模糊;通过亮度阈值提取亮部并模糊实现Bloom效果;采用累积叠加方式实现运动模糊。每种效果都配有对应的Shader和脚本实现代码,并展示了最终效果图。文章还总结了屏幕后处理的核心技术点,如卷积计算、Pass复用、混合模式设置
2025-07-27 19:02:46
1214
原创 LeetCode刷题记录----138.随机链表的复制(medium)
本文探讨了复制带随机指针链表的两种解法:递归+节点池和迭代+节点拆分。递归法通过字典存储已复制节点,先处理next指针再处理random指针,保证正确连接。迭代法则将复制节点插入原链表,利用原链表顺序处理random指针后再拆分,节省空间。两种方法时间复杂度均为O(N),递归法空间O(N),迭代法空间O(1)。关键思路:1)利用回溯处理后续信息;2)通过修改原链表结构获取必要信息。
2025-07-27 11:44:24
360
原创 LeetCode刷题记录----25.K个一组翻转链表(hard)
本文探讨了分组翻转链表的三种解法:1)使用数组存储k个节点进行翻转,空间复杂度O(k);2)通过多个指针变量迭代实现,空间复杂度O(1);3)优化后的头插法,以哑节点统一处理各组翻转,逻辑更清晰。核心思路都是将链表按k个节点分组,通过调整指针方向实现组内翻转,并处理好组间连接。头插法通过将后继节点插入到当前组头节点之后的方式,实现了简洁高效的分组翻转,最优解的时间复杂度O(n),空间复杂度O(1)。
2025-07-26 22:08:26
806
原创 LeetCode刷题记录----24.两两交换链表中的节点(medium)
本文介绍了链表相邻节点两两交换的两种解法。迭代法使用哑节点辅助,通过三指针(last、prev、cur)实现节点交换并维护连接关系,时间复杂度O(n),空间复杂度O(1)。递归法则将问题分解为:新头节点指向当前节点的下一节点,当前节点指向后续已交换链表,新头节点指回当前节点。两种方法都需注意头节点处理,迭代法建议使用哑节点简化操作,递归法要明确函数返回值是已交换完成的链表。时间复杂度均为O(n),递归空间复杂度为O(n)因递归栈开销。
2025-07-25 18:14:49
311
原创 Unity实践----【分析】丧尸围城小项目
本文介绍了一个基于Unity引擎开发的简易游戏框架设计。该游戏包含场景切换系统,包括主菜单、角色选择、地图选择和游戏场景四个主要界面,支持面板切换与数据持久化管理。游戏逻辑涉及角色移动、射击、建造防御塔等核心玩法,以及僵尸波次进攻、基地防守等对抗机制。通过类图分析了UI面板、数据对象和游戏对象三大类别的架构设计,为后续开发提供了清晰的模块划分。
2025-07-25 17:10:38
386
原创 LeetCode刷题记录----19.删除链表的倒数第 N 个结点(medium)
本文探讨了删除链表倒数第n个节点的三种解法:1)递归法:通过递归回溯时计数,当n=0时删除下一节点,时间复杂度O(N),空间复杂度O(N);2)栈方法:使用栈保存节点后弹出n个节点删除,更直观但仍需O(N)空间;3)双指针法:快指针先走n步,然后与慢指针同步移动,快指针到末尾时慢指针正好位于待删节点前驱,最优解为O(N)时间与O(1)空间。文章总结了链表问题的常用解法思路,包括递归转栈优化、快慢指针等技巧,并指出倒数第n个节点的本质是与末尾节点的距离关系。
2025-07-24 22:27:42
985
原创 《Unity Shader入门精要》学习--中级篇--让画面动起来的魔法
本文总结了Unity Shader中实现动画效果的两种主要方式:纹理动画和顶点动画。纹理动画包括序列帧动画(通过时间控制纹理坐标偏移)和无限滚动背景(多层不同速度的纹理叠加);顶点动画则通过修改顶点位置实现波浪效果和广告牌技术。文章详细介绍了每种动画的实现步骤,包括属性设置、着色器编写和效果优化技巧,特别强调了透明物体渲染的注意事项和顶点动画中禁用批处理的必要性。这些技术为游戏开发提供了高效且灵活的动画实现方案。
2025-07-24 20:59:03
1434
原创 UGUI实践----【复盘】对一些问题的总结
本文总结了UI开发中的关键要点:1.拼面板时需注意层级优化(文字在下层、图片在上层)、规范布局和使用自动布局组件,建议提前规划图集并减少遮罩使用;2.数据配置应区分业务场景,采用安全访问机制,规范读写时机,建议Excel数据转Json存储;3.逻辑处理要分步实现,优先处理对象自身逻辑,动态资源提前打图集;4.提出可优化方向如面板基类重构、对象缓存池、开发Excel转Json工具等。整体开发流程为:拼面板→配数据→写逻辑→联调,强调前期规划设计的重要性。
2025-07-24 19:41:41
635
原创 Unity学习--【数据持久化】PlayerPrefs与反射结合使用(上)
本文总结了Unity中PlayerPrefs数据存储工具的核心功能和使用方法。首先介绍了PlayerPrefs作为存储玩家数据的公共类,支持int、float、string三种数据类型的键值对存储,并详细说明了Set、Get、HasKey、Delete等基础API的用法。其次讲解了如何通过反射技术扩展PlayerPrefs的功能,实现自定义对象的存储与读取。最后说明了不同平台下PlayerPrefs的存储位置:Windows注册表、iOS的plist文件和Android的xml文件。文章强调PlayerPr
2025-07-23 23:44:26
561
原创 LeetCode刷题记录----2.两数相加(medium)
本文提出两种链表数字相加的解决方案。初始方案通过比较链表长度后补零对齐,逐位相加处理进位,时间复杂度O(m+n),空间复杂度O(1)。优化方案直接新建链表存储结果,无需比较长度,通过同时遍历两个链表,处理不同长度及进位情况,最终时间复杂度O(max(m,n)),空间复杂度O(1)。关键点在于:1)使用//和%运算符分别处理进位和当前位值;2)循环结束后需检查剩余进位;3)返回结果不计入空间复杂度。优化方案更简洁高效,避免了不必要的预处理步骤。
2025-07-23 21:04:43
230
原创 《Unity Shader入门精要》学习--中级篇--更高级的纹理
本文主要介绍了Unity中三种高级纹理的实现方法:立方体纹理、渲染纹理和程序纹理。立方体纹理可用于天空盒和环境映射,通过反射、折射和菲涅尔反射实现金属光泽、玻璃效果等;渲染纹理将渲染结果保存到纹理中,用于实现镜子、玻璃等特效;程序纹理通过脚本动态生成纹理,可实现随机图案和动画效果。文章详细讲解了每种纹理的具体实现步骤,包括Shader编写、属性设置和采样计算等,并对比了不同效果的差异。这些高级纹理技术可以大大提升游戏视觉效果,合理地选择和使用它们能创造出更丰富逼真的场景。
2025-07-23 19:36:19
1352
原创 UGUI实践----【动手】基础面板与管理器
本文介绍了基于Unity的UI系统设计与实现方案,主要内容包括: 基础架构:通过BasePanel基类实现面板的淡入淡出效果和初始化规范,使用UIManager统一管理面板的创建、销毁和获取; 核心功能模块:详细设计了登录面板、注册面板、提示面板的功能实现,包括数据缓存、验证逻辑和界面交互; 数据管理:LoginDataManager负责账号数据的存储验证、服务器信息管理,采用JSON文件存储方案; 开发经验:强调前期规划的重要性,包括UI适配方案确定、对象职责划分,并反思了开发过程中的不足。
2025-07-22 23:38:14
1248
原创 LeetCode刷题记录----142.环形链表(medium)
本文探讨了检测链表中环入口节点的两种方法。第一种哈希表法通过记录访问过的节点,当首次遇到重复节点时即为环入口,时间复杂度O(N),空间复杂度O(N)。第二种快慢指针法通过数学推导发现:从头节点到环入口的距离等于相遇点到环入口的距离。该方法无需额外空间(O(1)),且保持链表结构完整。最终推荐使用快慢指针法,它既能判断环的存在性,又能在不修改链表的情况下精确定位环入口节点。
2025-07-22 22:00:11
971
原创 UGUI实践----【分析】项目流程与需求分析
本文总结了基于唐老狮视频教学的游戏登录系统开发流程。项目主要包含登录、注册、选服、进入游戏等功能模块,重点分析了UI面板切换、数据持久化等核心需求。通过面向对象分析提取出UI面板(登录、注册、选服等)和数据管理器两个主要对象类,详细说明了各面板的功能需求和数据管理器的存储需求。文章强调前期流程分析和需求分析的重要性,建议通过绘制类图明确对象关系,为后续开发奠定基础。
2025-07-21 22:24:53
325
原创 《Unity Shader入门精要》学习--中级篇--更复杂的光照效果
本文详细介绍了Unity中的渲染路径、光照计算与阴影效果的实现。主要内容包括: 三种渲染路径的对比:前向渲染(逐光源处理)、顶点光照(性能最优但效果最差)和延迟渲染(适合多光源场景) 前向渲染的实现细节: 使用Base Pass处理主平行光和环境光 使用Additional Pass处理其他逐像素光源 需要正确设置Pass标签和编译指令 阴影实现技术: 传统阴影贴图技术 屏幕空间阴影映射技术 在Shader中通过特殊Pass和宏实现投影/受影效果 特殊材质处理: 透明度裁剪物体的阴影实现 透明度混合物体阴影
2025-07-21 17:49:11
1188
原创 LeetCode刷题记录----141.环形链表(easy)
本文探讨了检测链表是否存在环的三种方法。1.哈希表法:存储访问过的节点,遇到重复节点即判定有环,时间复杂度O(N),空间复杂度O(N)。2.快慢指针法:使用两个指针遍历链表,若相遇则存在环,时间复杂度O(N),空间复杂度O(1)。3.节点计数法:利用题目给定的节点数限制(最多10000个),当遍历次数超过该数值时判定有环,时间复杂度O(1),空间复杂度O(1)。文章分析了各方法的优缺点,并提供了Python实现代码,特别强调了快慢指针法的优化思路以及利用题目约束条件的取巧方法。
2025-07-21 10:16:22
372
原创 UGUI学习--知识点学习总结篇
摘要:本文系统总结了Unity UGUI系统的学习内容,分为基础篇和进阶篇。基础篇包括CanvasScaler等核心组件、三大基础控件及组合控件的使用,以及图集制作优化技巧。进阶篇涵盖UI事件监听、3D交互、渲染控制等高级功能。作者反思了学习方法,指出机械记录效果不佳,改用理解后用自己的话总结能更好掌握知识。同时意识到需要制定更明确的学习目标,并注意劳逸结合,避免过度使用导致手指不适。整体展现了系统性的技术学习过程和自我反思。
2025-07-20 19:46:06
577
原创 LeetCode刷题记录----234.回文链表(easy)
摘要:本文探讨了判断链表是否为回文的多种方法。最直接的方式是将链表值存入数组后用双指针比对(时间复杂度O(N),空间复杂度O(N)),在Python中可利用切片特性快速比较。优化思路提出了反转链表后比较数字的方法,但存在大数溢出问题。更优解是使用快慢指针找到中点后反转后半部分链表进行比对(时间复杂度O(N),空间复杂度O(1))。最后介绍了递归解法,利用栈特性实现反向遍历。各种方法各有利弊,需根据具体场景选择。
2025-07-20 11:58:05
818
原创 Unity学习--【数据持久化】Json的序列化与反序列化
本文介绍了JSON的基础知识及在Unity中的应用。JSON是一种键值对结构的数据格式,使用{}表示对象,[]表示数组。文章重点讲解了两种Unity中的JSON处理方法:JsonUtility和LitJson。JsonUtility需要添加特性标记,不支持字典处理,会将null转为默认值;而LitJson无需特性标记,支持字典处理,能正确处理null值。两种方法各有利弊,JsonUtility是Unity内置方案,LitJson则功能更全面但需要额外导入。文章还提供了Excel转JSON配置数据的方法,并详
2025-07-19 17:06:25
1038
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人