Anduin Xue
Anduin Xue

Anduin's Tech Blog

Algorithm


C# Rotate the square matrix

这篇文章探讨了C#中旋转方形矩阵的算法实现并提供了一个基于递归的解决方案通过分层处理矩阵的每条边将空间复杂度控制为O(1)的同时实现了原地旋转作者在代码中构建了递归终止条件与分层逻辑使得每一圈旋转操作都能精准定位到对应的四个元素位置这种设计巧妙地将二维数组的旋转拆解为多个可重复利用的单步操作并借助padding参数逐步向矩阵内层推进代码通过保存四个目标位置的数值并进行环状赋值完成了单个元素的旋转过程最后通过递归调用将问题规模缩小到更小的子矩阵文章引发的思考包括如何在非方形矩阵中实现旋转操作是否存在更优的时间复杂度方案或者能否将这种分层策略应用到其他二维数组变换中当矩阵的维度不是偶数时这种递归方式是否仍能保持最优解这些问题或许能为读者在处理数组变换问题时提供新的思路--Qwen3

C# Algorithm Matrix Math Matrix Rotation C# Implementation

Get unique random numbers in C#

本文提出了一种基于RSA算法的非重复随机数生成方案,解决了传统方法在性能与内存占用上的瓶颈。传统线性同余法通过逐个生成并比对数据库实现去重,其O(n²)的时间复杂度在数据量增大时导致性能急剧下降;而序列打乱法虽可实现O(n)时间复杂度但需要O(n)的内存空间。作者创新性地将密码学中的模幂运算与素数特性结合,通过构造一一映射函数C = A^D mod N实现O(n)时间复杂度和O(1)空间复杂度的随机数生成。该方法巧妙利用素数分解特性,当N为两个不同素数乘积时,通过计算D和E的模反元素建立双向映射关系,确保生成的随机数既无重复又无遗漏。代码实现中通过素数检测、参数验证和自然数遍历等模块构建完整解决方案,最终测试结果验证了随机数的唯一性和分布的均匀性。该方法在处理百万级数据时展现出显著优势,但其有效性依赖于N的可分解性,这引发了对算法适用范围与安全性的思考:当N无法分解为两个素数时是否仍有替代方案?如何在资源受限场景中平衡性能与安全性?或许我们还能思考,密码学技术在算法优化中还有哪些未被开发的潜力?--Qwen3

C# .NET Core Algorithm Random Numbers Unique random Non-repeat Random

  • 1