Recent Posts
-
Design Pattern 101: 领域驱动设计在.NET中的实践
•
领域驱动设计在.NET中的实践 领域驱动设计(Domain-Driven Design, DDD)是一种软件开发方法,它强调将业务领域作为软件设计的核心。下面我将介绍如何在.NET中应用DDD,并提供相应的代码示例。 核心概念 1. 领域模型 (Domain Model) public class Order { public int Id { get; private set; } public DateTime OrderDate { get; private set; } public Address ShippingAddress { get; private set; } private readonly List<OrderItem> _items = new(); public IReadOnlyCollection<OrderItem> Items => _items.AsReadOnly(); public Order(Address…
-
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…