题目 实现一个算法,确定一个字符串 s 的所有字符是否全都不同。 链接:https://leetcode.cn/problems/is-unique-lcci/ 解答 思路:如果一个字符第一次出现的下标和最后一次出现不一样,说明出现过不止一次 publicclassSolution{publicboolIsUnique(stringastr){boolisUnique=true;foreach(chariteminastr){intpreIndex=astr.IndexOf(item);intlastIndex=astr.LastIndexOf(it...
题目 给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。 解法 publicclassSolution{publicboolCheckPermutation(strings1,strings2){vars1f=s1.ToList();//这里的var也可以用List<char>来代替vars2f=s2.ToList();s1f.Sort();s2f.Sort();returnnewstring(s1f.ToArray())newstring(s2f.ToArray());}...
题目 URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。) 题解 publicclassSolution{publicstringReplaceSpaces(stringS,intlength){StringBuilderresultSB=newStringBuilder();for(inti=0;i<length;i){if(S[i]''){resultSB.Append("%20");}elseresultSB.Append(S...
题目 给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。 回文串不一定是字典当中的单词。 题解 思路:字符串中的字符出现都是偶数次或者只有一个字符出现奇数次 publicclassSolution{publicboolCanPermutePalindrome(strings){//char[]schar=s.ToCharArray();varschar=s.ToList().GroupBy(i=>i);//AttentionPlz!!!intsum=0;foreach(variteminschar){...
题目 字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。 题解 解题思路:使用StringBuilder拼接字符串 publicclassSolution{publicstringCompressString(stringS){if(string.IsNullOrEmpty(S)){returnS;}StringBuilderresultSB=newStringBuilder();intcount=1;c...
题目 给你一幅由 N×N 矩阵表示的图像,其中每个像素的大小为4字节。请你设计一种算法,将图像旋转90度。 不占用额外内存空间能否做到? 题解 思路:先上下翻转,再沿着对角线进行翻转 publicclassSolution{publicvoidRotate(int[][]matrix){intsize=matrix.Length;for(inti=0;i<size/2;i){for(intj=0;j<size;j){inttemp=matrix[i][j];intlowerIndex=size-i-1;matrix[i][j]=matrix[lo...
题目 编写一种算法,若M×N矩阵中某个元素为0,则将其所在的行与列清零。 题解 思路:先记住为0的成员的行数和列数,再用一个循环将包含这些行数、列数的值都变为0 publicclassSolution{publicvoidSetZeroes(int[][]matrix){HashSet<int>rs=newHashSet<int>();HashSet<int>cs=newHashSet<int>();for(inti=0;i<matrix.Length;i){for(intj=0;j<matrix[i].Length;j){i...
题目 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。 题解 思路: 首先判断长度是否一致; 其次如果是轮转而得到的,那么两个字符串拼接必然有另外一个字符串存在; publicclassSolution{publicboolIsFlipedString(strings1,strings2){if(s1.Length!=s2.Length)returnfalse;Stringss=s2+s2;returnss.Contains(s1);}} ...
1用Json+PlayerPrefs保存数据 最近在学习用Json+PlayerPrefs保存游戏数据。 参考代码如下: usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassSaveManager:Singleton<SaveManager>{protectedoverridevoidAwake(){base.Awake();DontDestroyOnLoad(this);}privatevoidUpdate(){if(Input.GetKeyDown(KeyC...
1题目 编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。 2题解 利用桶排序的方式 /Definitionforsingly-linkedlist.publicclassListNode{publicintval;publicListNodenext;publicListNode(intx){val=x;}}/publicclassSolution{publicListNodeRemoveDuplicateNodes(ListNodehead){bool[]bucket=newbool[20001];int[]res=newint[20001];for(inti=0;i&...
1执行顺序 Awake-->Start-->Update-->FixedUpdate-->LateUpdate-->OnGUI-->Reset-->OnDisable-->OnDestroy 2各环节特点 2.1Awake&Start Start、Awake都只执行一次 Awake——OnEnable——Start Awake:启动脚本本身和对象 Start:启动其他脚本的内容 如果代码中涉及到其他的脚本或者UI,我们就用Start,如果不涉及,就用Awake。 Caveat: (1)UI和屏幕上的组件在Awake中不一定可以启用,所...
Overview 课程链接:https://learn.u3d.cn/tutorial/2d-mobile-mstudio/?tab=overview5fd1bbede3dd110020a44f97 素材准备: 导入素材之后需要对游戏素材进行调整: PixelsPerUnit SpriteMode:如果要分成多张,那么选择Multiple FilterMode:选择Point则不会因为放大缩小影响清晰度 SpriteEditor:打开进入编辑界面,选择SliceByCells,然后Apply Projects TileMap 在Hierachy窗口中右键选择2DObjectTile...
状态机的类型有很多类型,以下三种都是状态机: ifelse switch 抽象类继承 抽象类:只需要写函数的声明,不需要写具体函数的实现方法;他的子集需要实现具体的方法。 以下是抽象类的一个案例: 需要挂载在物体之上的才需要继承monobehaviour,这里的抽象类不需要继承monoBehaviour publicabstractclassEnemyBaseState{publicabstractvoidEnterState(Enemyenemy){}publicabstractvoidUpdateState(Enemyenemy){}}
什么是委托? 函数指针的升级版,间接实现 数据和算法本质上都是地址 直接调用:通过函数的名字进行调用,直接获得函数所在地址并开始执行 间接实现:通过读取函数指针存储的函数所在地址并开始执行 Java不允许直接访问地址 Action和Func都是委托的一种 Action委托 Action是返回值和参数列表都为空的,只有符合这个条件的才可以用Action Actionaction=newAction(calculator.Report);//这里只需要方法名,不需要在后面加圆括号calculator.Report();//直接调用action.Invoke();//间接调用action(...
以下为OnCredit的关卡解锁课程笔记:
初步了解 事件是类的成员,属性(存储和访问数据)、方法(加工运算)都是类型的成员。 委托是一种类。 对象O 事件E 对象O拥有一个事件E:当E事件发生的时候,O可以通知别的对象。 事件的功能:使得对象具有通知的能力 用于对象或类之间的动作协调或者信息传递。 订阅:提供代码,当事件发生的时候执行这些代码,被称为事件处理程序。 通过事件发送的消息:EventArgs事件参数 根据消息采取行动:响应事件 事件的功能:通知+事件参数(可选) MVC、MVP、MVVM模式都是事件模式更加高级的玩法。 日常开发中使用已有事件的机会比较多。 5个要素 闹钟-响-我-起床-我关注着闹钟 5个步骤...
以下内容为学习刘铁猛老师课程的课程笔记。 事件声明 声明一个自定义事件。 事件是基于委托的: 事件需要委托来做约束,事件处理器需要和约束对应上; 事件处理器需要保存和记录,只有委托类型的实例可以做到。 委托是事件的基础,事件是委托的上层建筑。 委托是一个类,声明一个委托类型和声明一个委托类型的字段是不一样的。 事件的触发一定是事件拥有者的一些内部逻辑触发的事件。 以下代码展示了事件的完整声明: usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threa...
框架 主菜单 场景切换 计分 游戏逻辑 合成动效 音效 包含的内容: 背景、墙、水果、死亡线、UI、音乐 逻辑: 待命水果X轴跟随鼠标落下,待命水果是没有重力的 水果落地有碰撞,带有弹性,相同水果碰撞合成更大的水果 如果抵达死亡线游戏失败,重新加载场景 显示当前分数 场景 地板、墙添加方形的碰撞体 水果添加circle碰撞体 添加弹跳效果: 在物体上添加新的material(物理材质只包含两个参数:摩擦力和弹性) 我们将摩擦力调整为0.4,弹性调整为0.2。 将水果做成预制体: 给不同的水果添加circlecollider和rigidbody 游戏逻辑 Start:游戏一...
设计模式概览 各类型对比 分类 定义 侧重点 适用案例 使用方式 优势 缺陷 单例模式 确认类只有一个对象,并提供一个全局方法来获取这个对象。 获取日志工具 能产生唯一对象的类提供全局方法;把唯一的类对象设置为静态的类。 防止类对象被任意生成而造成系统错误;获取类对象方便。 容易过度使用。 状态模式 让一个对象的行为随着内部状态的改变而变化,状态改变之后就像是改变了类一样 场景转换 定义一个各状态通用的接口;各状态继承整个接口定义内部状态。然后再用一个脚本来控制切换。 降低维护难度;状态执行环境单一;一些状态可以项目之间共享。 状...
日期 修订内容 20221118 补充C编译过程;补充各种数据容器的使用案例 20221119 补充类部分关于静态类、抽象类、密封类的描述 Unity&C .Net .net是微软提供的平台,开源、(最初是不支持的)支持跨平台(Linux和macOS)、支持多种语言使用。 .Net提供源代码库,包含基类库(BCL)(被认为是一个庞大的OOP代码库),促进了其所支持的编程语言之间的互操作性。.Net也包括公共语言运行库(CLR),复杂执行.net库开发的所有运行程序。 .netframework后来被多次分叉,每个分叉都会修改自己的BCL。.netstand...