lc-linkedlist
我们专门开个链表的算法题坑,方便总结在笔面试中可能会涉及到的链表操作。
在ACM中我们都用数组模拟双向链表,所以就不要嘲笑为什么我一个ACMer还要整理力扣的题了,是真不会啊。
Easy
求两个单向链表的相交点
力扣链接
一般链表的题,输入只给你一个指向链表头的头指针。但是这题我们要求两个单向链表的相交点,所以我们开始有两个头指针 headA 和 headB。
怎么求相交点呢?或许可以枚举第一个链表上的每个点,然后遍历第二个链表的每个点,看看二者是否有相同的地址。这种显然是 O(n2) 的。
有没有更简单的解法呢?假设我们目标是想出一个 O(n) 的解法,那么似乎我们遍历一次链表就 O(n) 了。
遍历完了然后呢?假设我们此时从另一个链表重新开始遍历,会发生什么?
假设链表A和链表B有共同后缀长度 z,而A的前缀长度为 x,B为 y,那么我们同时从头遍历链表 A 和 B,若到头了就从另一个链表重新开始遍历。
那么你会惊讶地发现,当我们这么遍历 x + y + z 步后,二者所在的点就是交互点!
也就是说,如果我们直接按照“遍历完当前链表就换链表遍历”...
LC2221-数组的三角和
原题
这题涉及到了一些求逆元的知识,我们刚好回顾一下。
首先很明显这题答案是: $$
\sum_{i=0}^{n-1} a_i C_{n-1}^i \bmod 10.
$$
数据范围也不大,可以暴力 O(n2)
求组合数,或者你直接模拟题意就行。
但作为Acmer必然要考虑更高效的做法。如果模数不是10而是一个质数 p,那么可以直接使用费马小定理来直接计算组合数分母的那些阶乘的逆元:
$$
a^p \equiv a \space (\bmod \space p).
$$
但是这题的10显然不是质数,怎么办呢?诶,我们还有个欧拉定理:
$$
a^{\phi(b)} \equiv 1\space (\bmod \space b),\gcd(a,b)=1.
$$
只要我们要求逆元的数 a
和10互质,就可以用欧拉定理求出它的逆元,即 aϕ(10) − 1 = a3.
可以考虑先将 a
中的质因子2和5全都提出。考虑我们要求的组合数 $C_n^m=\frac{n!}{m!(n-m)!}$,我们先考虑提出
m! 和 (n − m)!
中所有...
games101
Games101学习笔记
1. 线性代数
1.1. 线性变换
我们首先举个二维平面下的例子。
二维线性变换可以写为:
$$
\begin{aligned}
x' = ax + by. \\
y' = cx + dy.
\end{aligned}
$$
可以用矩阵 M 来表示: $$
\begin{bmatrix} x^{'}\\y^{'} \end{bmatrix}= \begin{bmatrix} a & b\\c & d \end{bmatrix} \begin{bmatrix} x\\y \end{bmatrix}.
$$
这里有一个小技巧,就是将两个基向量 (1, 0), (0, 1) 分别代入,得到 (a, c), (b, d) 就是这两个基向量经过变换后的向量,从而快速得到矩阵 M。
1.2. 齐次坐标(Homogeneous Coordinates)
在线性变换的基础上添加平移变换。
线性变换不能表示平移: $$
\begin{bmatrix} x^{'}\\y^{'} \end{bmatrix}=...
ASC and AS
目前GAS系列文章是在作者边学边实践的过程中的产出,因此未来100%会继续改善。
GAS-1
在这篇文章,我们来引进GAS系统中的两个部件。
Ability System Component
Ability System Component(ASC)是整个GAS系统中最基础的一个组件,它负责主要的对象与GAS的交互。在后续提及Gameplay Effect(GE)的时候,可以发现GE本身就是通过ASC进行施加的,同时这个过程中需要的 FGameplayEffectContextHandle 和 FGameplayEffectSpecHandle 都是通过ASC进行构建。不仅如此,ASC还和其所在类对应的AttributeSet,以及处理各种Gameplay Effect与使用技能Gameplay Ability都密切相关。因此对于一个角色,如果要将其加入GAS系统,你第一时间就是给予其一个Ability System Component。
ASC有两个代表Actor,分别是OwnerActor和AvatarActor,前者是实际构建(拥有)该ASC的Actor,...
GAS_Intro
Gameplay Ability
System前置知识
再进入我们UE5特供的GAS插件之前,我们需要回顾一些关于虚幻的知识~
Controller
在我之前使用UE4制作一些demo的时候,我通常直接在要控制的Character类中,实现一些逻辑(如控制输入)。然而,受MVC设计模式的启发,对于我们要possess的Character(或者Pawn),应当尽量将逻辑与功能解耦合。
我自己举一个例子吧,例如在射击游戏中,可能存在固定位置的机枪、岸防炮,我们应当将这些作为Pawn的子类,因为它们需要被玩家控制。对于各自武器的特定功能,例如发射子弹或者炮弹,应当在Pawn中实现,因为它们是独立于Controller的。对于Controller,我们可以切换自己possess的pawn,例如在使用固定机枪前控制我们的角色,这时候可以进行移动,而使用机枪时,则可以控制机枪射击,无法进行移动。而这便是Controller的职责。(对于切换移动,我目测可以采用UE5的Enhanced
Input系统,通过切换Input Mapping Context来实现。
当然,对于Cont...
Hello World
Welcome to Hexo! This is your very
first post. Check documentation for
more info. If you get any problems when using Hexo, you can find the
answer in troubleshooting or
you can ask me on GitHub.
Quick Start
Create a new post
1$ hexo new "My New Post"
More info: Writing
Run server
1$ hexo server
More info: Server
Generate static files
1$ hexo generate
More info: Generating
Deploy to remote sites
1$ hexo deploy
More info: Deployment
