20250428-UE4渲染流程
非常好的系统了解UE渲染管线的视频讲解虚幻引擎中文技术直播 第1期 虚幻引擎4的实时渲染流程_哔哩哔哩_bilibili
UE5 GamePlayCamara
why:为什么用gameplaycamera 模块化的设计。 能更简便地创建复杂的摄像机行为。 能创建自定义的过渡行为。 z
leetcodek-avoiding数组的最小总和
给你两个整数 n 和 k 。 对于一个由 不同 正整数组成的数组,如果其中不存在任何求和等于 k 的不同元素对,则称其为 k-avoiding 数组。 返回长度为 n 的 k-avoiding 数组的可能的最小总和。 示例 1: 输入:n = 5, k = 4输出:18解释:设若 k-avoiding 数组为 [1,2,4,5,6] ,其元素总和为 18 。可以证明不存在总和小于 18 的 k-avoiding 数组。示例 2: 输入:n = 2, k = 6输出:3解释:可以构造数组 [1,2] ,其元素总和为 3 。可以证明不存在总和小于 3 的 k-avoiding 数组。 提示: 1 <= n, k <= 50 解法一:暴力遍历从1开始构造正整数数组,判断新增元素是否满足条件。 1234567891011121314151617class Solution: def minimumSum(self, n: int, k: int) -> int: result = [] ...
leetcode624
数组列表中的最大距离中等相关标签相关企业给定 m 个数组,每个数组都已经按照升序排好序了。 现在你需要从两个不同的数组中选择两个整数(每个数组选一个)并且计算它们的距离。两个整数 a 和 b 之间的距离定义为它们差的绝对值 |a-b| 。 返回最大距离。 示例 1: 输入:[[1,2,3],[4,5],[1,2,3]]输出:4解释:一种得到答案 4 的方法是从第一个数组或者第三个数组中选择 1,同时从第二个数组中选择 5 。示例 2: 输入:arrays = [[1],[1]]输出:0 提示: m == arrays.length2 <= m <= 1051 <= arrays[i].length <= 500-104 <= arrays[i][j] <= 104arrays[i] 以 升序 排序。所有数组中最多有 105 个整数。 思路0:遍历每个数组,获取最大和最小值。遍历完后相减。 错原因:题目中要求不同数组。思路1: 遍历每个数组 ...
20250218-leetcode1552两球之间的磁力
思路0:数组变为有序,依次放置,小球。最先两个球,放在首尾。然后用二分查找方式,查找中间小球放置的位置。中间位置查找标准为,距离首部或者尾部的球,引力最大,找到这个引力最大值的位置,就是这个小球的位置 1234567891011121314151617181920212223242526272829class Solution: def maxDistance(self, position: List[int], m: int) -> int: position.sort() n = len(position) left,right = 0,n-1 def bitsect(self,left,right): left,right = 0,n-1 while left<right: mid = (left+right)//2 if (position[mid]-position[left])...
20250218-leetcode2080区间内查询数字频率
1.直接遍历2.增加缓存3.使用hash 表存储每个数字的位置 bisect_left(a, x): 在有序序列 a 中查找 x返回第一个大于等于 x 的元素位置如果所有元素都小于 x,返回 len(a)bisect_right(a, x): 在有序序列 a 中查找 x返回第一个大于 x 的元素位置如果所有元素都小于等于 x,返回 len(a) 1234567891011121314151617181920212223class RangeFreqQuery: def __init__(self, arr: List[int]): self.list_dict = defaultdict(list) for i,num in enumerate(arr): self.list_dict[num].append(i) def query(self, left: int, right: int, value: int) -> int: if value not in self.list_dict:...
20250217-leetcode1706球会落在哪里
用一个大小为 m x n 的二维网格 grid 表示一个箱子。你有 n 颗球。箱子的顶部和底部都是开着的。 箱子中的每个单元格都有一个对角线挡板,跨过单元格的两个角,可以将球导向左侧或者右侧。 将球导向右侧的挡板跨过左上角和右下角,在网格中用 1 表示。将球导向左侧的挡板跨过右上角和左下角,在网格中用 -1 表示。在箱子每一列的顶端各放一颗球。每颗球都可能卡在箱子里或从底部掉出来。如果球恰好卡在两块挡板之间的 “V” 形图案,或者被一块挡导向到箱子的任意一侧边上,就会卡住。 返回一个大小为 n 的数组 answer ,其中 answer[i] 是球放在顶部的第 i 列后从底部掉出来的那一列对应的下标,如果球卡在盒子里,则返回 -1 。 思路:构造一个,球体个数大小的数组result。数组的信息记录小球将要进入下一行,小球的所在的位置。如果小球无法进入下一行,则数组元素设置为-1。当遍历到下一行的列时,只遍历result 不为-1的列数。 遍历完数组后,将这个数组中的非-1...
LeetCode题目分类总结
动态规划类题目1. 基础型动态规划 LeetCode 746 使用最小花费爬楼梯 特点:线性DP,每步决策只依赖前两步 状态定义:dp[i]表示到达第i个台阶的最小花费 优化:可以用滚动数组将空间复杂度优化到O(1) LeetCode 119 杨辉三角形 II 特点:组合数学问题,可以用DP优化 技巧:利用滚动数组优化空间复杂度 2. 决策型动态规划 LeetCode 198 打家劫舍 特点:相邻元素不能同时选择 状态定义:dp[i]表示前i个房屋能偷到的最大金额 状态转移:dp[i] = max(dp[i-1], dp[i-2] + nums[i]) LeetCode 740 删除并获取点数 特点:决策会影响相邻元素,类似打家劫舍 优化:通过计数转化为打家劫舍问题 3. 多维动态规划 LeetCode 2944...