Recent Posts
-
Algorithms 101: 使用优先队列 (Priority Queue) 找到与目标点最近的 k 个点
•
使用优先队列 (Priority Queue) 找到与目标点最近的 k 个点 在计算几何中,一个常见的问题是给定一组二维点和一个目标点,找到与目标点距离最近的 ( k ) 个点。这个问题可以通过多种方法解决,但使用优先队列(Priority Queue)是一种高效且实用的解决方案。本文将详细介绍如何利用 Python 的 heapq 模块实现这一功能。 问题描述 我们有一组点和一个目标点 ( p ),需要找到这组点中与目标点最近的 ( k ) 个点。例如: 输入: points = [ (0, 0), (1, 1), (2, 2), (3, 3) ] p = (0, 2) k = 2 输出: [(0, 0), (1, 1)]…
-
Algorithms 101: 反转 K 个一组的链表
•
反转 K 个一组的链表详解及示例 在链表操作中,反转每 K 个节点是一道经典问题,它测试了我们对递归和链表指针操作的理解。本文将详细讲解如何实现反转 K 个一组的链表,并通过示例帮助理解。 问题定义 给定一个链表,要求每 K 个节点为一组进行反转,并返回反转后的链表。如果剩余节点不足 K 个,则保持原有顺序。 例子: 输入: head = 1 -> 2 -> 3 -> 4 -> 5, k = 3 输出: 3 -> 2 -> 1 -> 4 -> 5 注意: 必须按照 K 个一组反转。 最后不足 K 个的节点保持原顺序。 思路 我们可以通过递归实现反转 K…
-
Python 101: OrderedDict move_to_end method
•
The move_to_end method is implemented as part of Python’s OrderedDict class in the collections module. Internally, OrderedDict uses a combination of a hash table and a doubly linked list to maintain the order of elements, which allows efficient insertion, deletion, and reordering. Here’s a step-by-step explanation of how move_to_end is…