文章列表

1.5k 1 分钟

# 1 - 2200. 找出数组中的所有 K 近邻下标 class Solution: def findKDistantIndices(self, nums: List[int], key: int, k: int) -> List[int]: n = len(nums) # idxs = [i for i in range(n) if nums[i] == key] res = [] for i in range(n): for j in range(max(0, i - k), min(n, i + k + 1)): if nums[j] == key: res.append(i)...
2.8k 3 分钟

# 1 - 2169. Count Operations to Obtain Zero class Solution: def countOperations(self, num1: int, num2: int) -> int: cnt = 0 while num1 and num2: num1, num2 = max(num1, num2), min(num1, num2) num1 = num1 - num2 cnt += 1 return cnt# 2 - 2170. Minimum Operations to Make the Array Alternating class...
2.4k 2 分钟

# 1 - 2164. Sort Even and Odd Indices Independently class Solution: def sortEvenOdd(self, nums: List[int]) -> List[int]: n1 = sorted(nums[::2]) n2 = sorted(nums[1::2], reverse=True) ans = [] for i in range(len(nums)): ans.append(n1[i//2] if i % 2 == 0 else n2[i//2]) return ans# 2 - 2165. Smallest...
1.9k 2 分钟

# 1 - 2160. Minimum Sum of Four Digit Number After Splitting Digits class Solution: def minimumSum(self, num: int) -> int: digits = [num // 1000 % 10, num // 100 % 10, num // 10 % 10, num % 10] ans = float("inf") for i in range(4): for j in range(i + 1, 4): ans = min(ans, sum(digits) -...
2.6k 2 分钟

# 1 - 2154. Keep Multiplying Found Values by Two class Solution: def findFinalValue(self, nums: List[int], original: int) -> int: while original in nums: original *= 2 return original贴一个灵茶山艾府大佬的时间 O (n) 空间 O (1) 的方法: class Solution {public: int findFinalValue(vector<int>...
5.7k 5 分钟

终于到阴影了。 # Shadow Mapping 阴影映射是最简单的生成阴影的方法。有以下特点: 是一种图象空间的做法,不需要知道场景的几何信息 会产生走样 只能对点光源做硬阴影,边缘明确 数值精度问题:判断是否相等会有浮点数的精度问题,可以判断是否大于或判断是否超出一定范围 分辨率:分辨率低会走样,分辨率高开销大 步骤: 从光源看向场景,生成一幅图,记录对应的深度 从相机看向场景,看到一个点时把它投影回光源的成像平面上得到像素位置,再和从光源看的图的这个像素相比较。如果比光源看到的深度大,说明应该有阴影。 差不多就上代码,创建帧缓冲和深度纹理,并把深度纹理附加到帧缓冲上的部分: //...
4.8k 4 分钟

立方体贴图,可以用来实现环境贴图或天空盒。 # 立方体贴图 有一种纹理叫 cubemap,包含六个纹理代表立方体的六个面。不像常规的纹理坐标有两个维度,立方体纹理使用法向量,也就是三维方向。根据法向量的朝向选取六个面中的一个,这个面的像素用来采样生成颜色。 这六个面通过它们相对于立方体重心被引用,背后的 int...
3.3k 3 分钟

在实现图形学相关概念时,还是发现对 WebGL 一知半解是不够的,所以特别单独学习一下,顺便记录一些其他方法。 # 图形渲染管线 上图取自 LearnOpenGL。蓝色部分是我们可以自己定义的部分。暂时还没有接触到几何着色器,先把重点放在顶点着色器和片段着色器上。 输入数据是顶点数据,顶点着色器处理每一个顶点数据,之后经过图元装配、几何着色器、光栅化之后进入片段着色器中。到片段着色器这里,处理对象就成了每一个片段(片段相当于像素),片段着色器的输入值也都是经过插值过的。片段着色器之后经过测试和混合呈现到屏幕上。 # 着色器和着色程序 # 顶点着色器 上图取自...
1.4k 1 分钟

# 1 - 2148. Count Elements With Strictly Smaller and Greater Elements class Solution: def countElements(self, nums: List[int]) -> int: return sum(1 for x in nums if x != min(nums) and x != max(nums))# 2 - 2149. Rearrange Array Elements by Sign class Solution: def rearrangeArray(self, nums:...
1.5k 1 分钟

# 1 - 2144. Minimum Cost of Buying Candies With Discount class Solution: def minimumCost(self, cost: List[int]) -> int: return sum(x for i, x in enumerate(sorted(cost, reverse=True)) if (i + 1) % 3 != 0)# 2 - 2145. Count the Hidden Sequences class Solution: def numberOfArrays(self, differences:...