五种完全不需要额外内存的模式,只用两个整数和题目给你的数组。讲清每种模式什么时候适用、为什么是线性的,以及最后一种里几乎人人都会写反的那一行。
14 9 月
计数时怎样避免每个元素查两次哈希表,Array.Sort 从哪个输入规模开始不再保持相等元素的原有顺序,以及 C# 直到 .NET 6 才有的堆,很多老的 C# 竞赛代码至今还在绕开它。
14 9 月
边一旦带权,BFS 就不再正确。Dijkstra 能解决;C# 的 PriorityQueue 没有 DecreaseKey,只能重复入队。如果每条边的权重都是 0 或 1,堆其实纯属多余。
14 9 月
正确的解法已经超时,你才会在意的那部分:不分配内存地读取输入,C# 不会提醒你的溢出,以及循环里的 Console.WriteLine 为什么要写 400,000 次。
14 9 月
C# 没有这类题默认的单链表节点类型,LinkedList
14 9 月
几乎所有树的题目都归结为一个问题:这个量是沿着树向下传,还是向上返回?路径和、不经过根的直径、最近公共祖先,以及人人第一次都会写错的二叉搜索树校验。
14 9 月
用异或找出只出现一次的值,用上大多数 C# 代码从没碰过的 BitOperations 类,再看看移位次数被悄悄取模、结果什么都没移的那个坑。