- 博客(14)
- 收藏
- 关注
原创 面试小结
阿里灵犀互娱—UE4开发岗1、map的实现原理,以及map的特点。2、如果map插入数据时产生冲突,怎样解决冲突。3、讲一下你对UE4中gameplay架构的理解。4、讲一下之前实习中印象深刻的技术问题。5、说一下你最熟悉的component,介绍一下他的功能。6、说一下charactermovement组件在执行不同状态(行走、游泳等)时,具体的工作原理。7、已知空间中三角的三个顶点坐标,怎样求相应三角面法向量。8、怎样顶点法向量。9、引擎源码看过多少,简单聊一聊。10、算法题:怎样在
2021-12-15 10:11:54 270
原创 汉诺塔递归问题
汉诺塔问题:这是一道著名的算法题,也是递归思想的典型体现。可以总结,当圆盘数为n时,将最下层圆盘和其余上部份所有圆盘看作两个整体,则满足以下步骤:1、把n-1个圆盘从A经过C移动到B2、把第n个圆盘从A移动到C3、把n-1个圆盘从B经过A移动到C经过总结,步骤1和3化为了该问题问题规模的n-1范围,构成递归条件。递归结束的条件即为n=0时,表明没有盘子可以移动。void HanNuo(int n, char a,char b,char c){ //将上方的.
2021-11-03 21:24:08 181
原创 校招笔试回顾总结-01
今天参加了西山居的校招笔试,总体感受是:难。(也是因为自己太菜鸡了),现在趁热打铁,把做过会的、不会的题总结一下。1、现有一个线性表( 38、25、74、63、52、48) ,使用散列函数 h(key) = kay % 7 来计算散列地址,存放于散列表 A(0……6)中,采用线性探测法,则等概率成功查找的平均查找长度为?按余数插入散列表并使用线性探测解决冲突后,计算平均查找长度:(平均查找长度就是每个数据查找长度之和除以数据个数)38 % 7 = 225 % 7 = 474 % 7 =.
2021-10-23 09:49:03 242
原创 判断链表中是否有环---CPP实现
描述判断给定的链表中是否有环。如果有环则返回true,否则返回false。思路:可以使用快慢指针遍历链表。如果链表中存在环,则快慢指针最总会相遇,出现 “快指针==慢指针” 的情况。如果没有,可以设置控制条件:当快指针不为nullptr 或 快指针的next为空时返回,表示链表中没有环。代码:class Solution {public: bool hasCycle(ListNode *head) { ListNode* Slow{head};
2021-10-14 22:57:59 176
原创 计算逆波兰式(后缀表达式)的值---CPP实现
描述计算逆波兰式(后缀表达式)的值运算符仅包含"+","-","*"和"/",被操作数可能是整数或其他表达式思路:这道题直接给了后缀表达式,所以省去了我们将中序表达式转换为后缀表达式的过程。后缀表达式的求值应借用栈来实现,即按顺序扫描后缀表达式,将数字入栈,遇到运算符,则弹出栈顶的两个元素进行相应运算,然后将运算结果再次入栈,重复此操作直到扫描结束。代码:class Solution {public: int evalRPN(vector<string>&
2021-10-06 20:44:08 358
原创 二叉树的最小深度---cpp实现
描述求给定二叉树的最小深度。最小深度是指树的根结点到最近叶子结点的最短路径上结点的数量。思路:可以采用广度优先遍历二叉树,当遍历到的第一个节点为叶子节点时,返回该叶子节点的所在深度即可。为此可以自建一个结构存储节点和层数的信息。代码如下:/** * struct TreeNode { * int val; * struct TreeNode *left; * struct TreeNode *right; * }; *//**广度优先遍历二叉树*/class Solu
2021-10-05 21:46:02 168
原创 输出二叉树的右视图--CPP实现
描述请根据二叉树的前序遍历,中序遍历恢复二叉树,并打印出二叉树的右视图思路:1、根据先序和后序遍历结果,反推二叉树(还原为为二叉树)2、层序遍历树,输出每一层的最右面的元素3、返回class Solution {public: vector<int> solve(vector<int>& xianxu, vector<int>& zhongxu) { // write code here
2021-09-29 22:12:27 179
原创 最长递增子序列---CPP实现
描述给定数组 arr ,设长度为 n ,输出 arr 的最长递增子序列。(如果有多个答案,请输出其中 按数值(注:区别于按单个字符的ASCII码值)进行比较的 字典序最小的那个)思路:分为两步:找到最长递增子序列、如长度相等,返回按位置顺序字典值小的那一组。(复杂度较高,有待优化 ~( = = ) /class Solution {public: /** * retrun the longest increasing subsequence * @par...
2021-09-28 22:02:59 170
原创 在二叉树中找到两个节点的最近公共祖先---CPP实现
描述给定一棵二叉树(保证非空)以及这棵树上的两个节点对应的val值 o1和o2,请找到 o1和o2的最近公共祖先节点。思路:递归。找到两个节点的公共祖先,首先需要找到节点,所以肯定要用到查找。所以使用dfs查找。那么如何确定最近公共祖先呢?我们可以将深度优先找到节点的路径使用容器保存起来,然后比较两个容器最后相等的元素所对应的节点,即为两节点的最近公共祖先。所以,简单来说,思路就是递归寻找目标节点,并将路径保存下来,最后比较两容器元素,返回最后一个相同的节点即可。代码:/**...
2021-09-27 23:19:07 348
原创 两个链表生成相加链表---CPP实现
描述假设链表中每一个节点的值都在 0 - 9之间,那么链表整体就可以代表一个整数。给定两个这种链表,请生成代表两个整数相加值的结果链表。思路:可以使用栈的“先进后出”特性,先将两个链表分别做入栈操作,然后每次两个栈各出栈一个元素进行相加求余操作,因为相加所以肯定要考虑进位操作,所以设置一位为进位标识符,如果相加两元素>=10,则置为1,在每次相加时加上进位数然后将进位数置为0,再判断元素和是否>=10,对进位位进行操作,然后求余之后的数就可以构造为一个节点使用头插法转换为链表了.
2021-09-26 20:42:46 195
原创 最长无重复子数组---CPP实现
描述给定一个数组arr,返回arr的最长无重复元素子数组的长度,无重复指的是所有数字都不相同。子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组思路:题目很明确,子数组是连续的,且寻找的子数组不能有重复值,所以我选用了map容器,采用双指针的办法遍历数组,每次遍历将当前数组元素用作键和值插入map,并使用一个pair类型的变量接收返回值,用pair的值部分判断是否插入成功,如果插入失败,就说明有了重复元素,此时就将当前子串长度和最
2021-09-25 21:03:00 312
原创 子数组的最大累加和问题---CPP解法
描述给定一个长度为 n 的数组 arr ,返回其中任意子数组的最大累加和。(没有全部是负数的情况)解答思路:首先要明确:什么是数组的子数组?我一开始以为是所有元素的排列组合(即可以不连续),所以使用了贪心算法,收集了所有正数元素,返回然后累加和,结果当然是不正确的。。。数组的子数组是连续的,即下标连续的一串数据,最大长度等于母数组。解法:这道题可以分析出:从首项开始遍历数组求累加和,每一次都将sum和0、ret和sum比较,取较大值。如果累加和sum小于0,那么说明此项之前的子数
2021-09-24 22:23:02 303
原创 寻找数组中第K大元素CPP实现
简单实现:运用STL秒实现!class Solution {public: int findKth(vector<int> a, int n, int K) { // write code here sort(a.begin(), a.end()); return a[n-K]; }};完事!~~~ 当然还可以优化一下!优化实现:快排 + 二分法鉴于快速排序的特点,每一次排序,都会找到一个基准...
2021-09-10 22:06:36 135
原创 二叉树的先序、中序和后续遍历cpp代码实现
二叉树作为一种最基本的数据结构,三种遍历是必须掌握的,今天在牛客上刷到了题目,第一反应是:我会!然而一番操作之后,却调试屡屡出错。所以,看似理论都会,落实不到实际代码上,还是白搭,作为一个程序员(未来的)来说,基础的知识更要打的扎实。题目如下:题目很简洁,下面动手来实现:首先二叉树数据结构,这个不再赘述,很基础的东西。三种遍历顺序的命名其实说的是根节点输出的位置,拿先序遍历来举例子 :输出顺序为根节点->左孩子->右孩子实现二叉树遍历代码的核心思想是递归,其实就是模拟
2021-09-10 20:16:42 934
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人