剑指offer
用c#写unity的杰宝
寒冬来了,润了润了,江湖再见
展开
-
剑指offer第46题
题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让n个小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到 m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0… m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦!!_)。请你试着想下,原创 2021-09-22 22:41:53 · 264 阅读 · 0 评论 -
剑指offer第24题(c#)
剑指offer第24题(c#)题目描述输入一颗二叉树的根节点和一个整数,按字典序打印出二叉树中结点值的和为输入整数的所有路径。路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径。这道题花了我一下午=.=(头秃),还是太菜了,得多练练。首先我的解题思路是要利用递归同时递归条件要把握住这两个点:1.路径节点值的和等于输入的整数。2.从根节点到叶节点才算一条完整的路径。这里我们就可以从这两点切入,要有两部分的判断sum等于输入值和需要从根节点遍历到叶节点判断递归是否到达叶节点和是否等于输入原创 2021-05-15 16:22:57 · 186 阅读 · 0 评论 -
剑指offer第23题(c#)
剑指offer第23题(c#)题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。(ps:我们约定空树不是二叉搜素树)后序遍历就表示最后一个数字是根节点,其中有一个位置是之前的所有数字都小于这个最后的根节点,这个位置之后所有的数字都大于这个最后的根节点,因此我们可以利用这个逻辑来进行递归实现判断,左边的再递归查询一次右边的也递归查询一次,直到最后递归到两边的叶子节点相等就说明这个后序遍历是二叉搜索树。原创 2021-05-14 21:35:56 · 129 阅读 · 0 评论 -
剑指offer第42题(C#)
剑指offer第42题(C#)题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。这道题目一开始看起来给我感觉使用多个数组就能达到目的,先使用两个数组或者一个二维数组去把和等于S两个数全部储存进去,然后再对每一对进行相乘比大小,把最小的那一对索引下标记录下来,然后通过这个索引把两个数字加入到一个列表中去返回即可;下面展示一些 内联代码片。 public List<int> FindNumbersW原创 2021-05-14 18:34:48 · 80 阅读 · 0 评论 -
剑指offer第34题(c#)
剑指offer第34题(c#)题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)这道算法题不是很难,稍微理解一下就能想到很多方法(主要今天在unity花的时间太多没精力做高难度的算法题了凑合一下更新),我使用的是哈希表思想来解题,利用字典的操作来记录下每个只出现一次字母的位置,把出现过多次的字母键值赋值为-1,这样的话只要值不是-1的字典就是只出现过一次的字母,因为我原创 2021-05-13 22:46:10 · 91 阅读 · 0 评论 -
剑指offer第33题(C#)
剑指offer第33题(C#)题目描述:把只包含质因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含质因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。这道题目刚拿到手我整个人是懵的(高数比较差),百度丑数之后才逐渐清晰起来,可以理解为是2,3,5的倍数因为丑数只有可能是这三个质因子;接下来我们再举例子看看2的倍数:2,4,6,8,10…3的倍数:3,6,9,12,15…5的倍数:5,10,15…大家可以看出来这些其实都是丑数原创 2021-05-12 20:12:48 · 82 阅读 · 0 评论 -
剑指offer第25题(C#)
剑指offer第25题(C#)题目描述输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)这道题目的主要是能够把逻辑梳理清楚,我采用的的方法是网上流行的解法,将整个链表复制然后再分割返回深拷贝后的复杂链表。借用网友做的三张图可以很直观的看出原链表插入复制第一步就是将链表中的next复制插入一遍。接下来就是把rand原创 2021-05-11 16:00:15 · 176 阅读 · 0 评论 -
剑指offer第三十二题(c#)
剑指offer第三十二题(c#)输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。首先通过转化将列表中的数据全部转化字符串类型,通过字符串的方法来实现功能,然后通过delegate委托(**这一块委托的方法我并不是很了解,但是大致知道使用它的功能实现类似于自定义一个函数,大家如果不懂去问问度娘,反正就是相当于自定义一个方法来求出所有可能中来比较大小求出最优项)**主要就是这一块大原创 2021-05-10 21:16:59 · 188 阅读 · 2 评论