C++
1.基础语法与语言特性 C++ 中指针,引用,数组 的区别是什么?各自的使用场景? 指针: 引用: 数组:指向第一个元素的指针 可为空 必须绑定对象 可随时指向其他对象 不能更换绑定对象 使用*解引用 和普通变量一样使用 手动管理生命周期 更加安全和简介 解释一下 virtual, override, final ,const的作用与用法。 什么是 RAII?它如何帮助资源管理? 请简述 std::move 和 std::forward 的区别及使用场景。 2. ⚙️ 性能与内存优化1. 游戏中出现卡顿,你如何定位和优化问题? 主线程阻塞(I/O,资源加载) GC/内存碎片化 大量对象更新 不合理的Tick 顺序 如何实现一个内存池?适合用在哪些场景?内存池目的:减少频繁的new/delete的开销和碎片·维护一个连续的大内存...
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...
20250213-leetcode1742盒子中小球的最大数量
解题思路方法一:哈希表统计12345678910111213def countBalls(self, lowLimit: int, highLimit: int) -> int: # 使用字典存储每个盒子中球的数量 box_count = {} # 遍历每个球的编号 for i in range(lowLimit, highLimit + 1): # 计算数位和 box_num = sum(int(d) for d in str(i)) # 更新盒子中球的数量 box_count[box_num] = box_count.get(box_num, 0) + 1 # 返回最多的球数 return max(box_count.values()) 优点: 实现简单直观 空间复杂度较低 适合小范围数据 方法二:数组统计(优化版)123456789101112131415def countBalls(self, lowLimit: int,...