08 2024 档案

摘要:题目: 给定一个单链表 L 的头节点 head ,单链表 L 表示为: L0 → L1 → … → Ln - 1 → Ln 请将其重新排列后变为: L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → … 不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 示例 1: 阅读全文
posted @ 2024-08-26 08:52 KenWan 阅读(28) 评论(0) 推荐(0)
摘要:题目 给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head = [1,2,3,4,5] 输出:[5,4,3,2,1] 示例 2: 输入:head = [1,2] 输出:[2,1] 示例 3: 输入:head = [] 输出:[] 提示: 链表中节点的数目范围 阅读全文
posted @ 2024-08-19 10:52 KenWan 阅读(70) 评论(0) 推荐(0)
摘要:快速排序:原理、实现与优化 1. 引言 快速排序(Quick Sort)是一种高效、常用的排序算法,由 Tony Hoare 在 1960 年提出。它是一种分治算法,采用了分而治之的思想。快速排序的平均时间复杂度为 O(n log n),在实际应用中通常比其他 O(n log n) 算法更快。下面将 阅读全文
posted @ 2024-08-14 19:16 KenWan 阅读(182) 评论(0) 推荐(0)
摘要:模板方法模式(Template Method Pattern) 1. 简介 模板方法模式是一种行为设计模式,它定义了一个算法的骨架,将一些步骤延迟到子类中实现。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。 2. 为什么使用模板方法模式? 代码复用:将公共代码放在抽象类中, 阅读全文
posted @ 2024-08-14 12:07 KenWan 阅读(128) 评论(0) 推荐(0)
摘要:归并排序:原理、实现与优化 1. 引言 归并排序(Merge Sort)是一种高效的、基于分治思想的排序算法。它的主要思想是将数组分成两半,分别排序,然后将排序后的两半合并成一个有序数组。归并排序的时间复杂度为 O(n log n),是一种稳定的排序算法。下面将详细介绍归并排序的原理、Java 实现 阅读全文
posted @ 2024-08-13 19:12 KenWan 阅读(356) 评论(0) 推荐(0)
摘要:堆与堆排序:堆数据结构、原理与实现 1. 引言 堆排序(Heap Sort)是一种高效的排序算法,它利用堆这种特殊的数据结构来进行排序。堆排序是选择排序的一种改进,它的时间复杂度为 O(n log n),是一种不稳定的排序算法。在深入了解堆排序之前,首先需要理解堆这种数据结构的特性和操作。下面将详细 阅读全文
posted @ 2024-08-11 21:43 KenWan 阅读(107) 评论(0) 推荐(0)
摘要:希尔排序:原理、实现与分析 1. 引言 希尔排序(Shell Sort)是插入排序的一种更高效的改进版本。它由 Donald Shell 于 1959 年提出,是第一个突破 O(n^2) 的排序算法。希尔排序是一种非稳定排序算法,其基本思想是先将整个待排序的记录序列分割成为若干子序列分别进行直接插入 阅读全文
posted @ 2024-08-10 22:12 KenWan 阅读(97) 评论(0) 推荐(0)
摘要:观察者模式(Observer Pattern) 1. 简介 观察者模式是一种行为设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 2. 为什么使用观察者模式? 松耦合:主题和观察者之间是松耦合 阅读全文
posted @ 2024-08-10 14:51 KenWan 阅读(88) 评论(0) 推荐(0)
摘要:直接插入排序:原理、实现与分析 1. 引言 直接插入排序(Straight Insertion Sort),通常简称为插入排序,是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。本文将详细介绍插入排序的原理、Java 实现、优化 阅读全文
posted @ 2024-08-09 19:54 KenWan 阅读(240) 评论(0) 推荐(0)
摘要:简单选择排序:原理、实现与分析 1. 引言 简单选择排序(Simple Selection Sort),通常简称为选择排序,是一种简单直观的排序算法。它的工作原理是在未排序序列中找到最小(或最大)元素,存放到排序序列的起始位置,然后再从剩余未排序元素中继续寻找最小(或最大)元素,然后放到已排序序列的 阅读全文
posted @ 2024-08-08 18:50 KenWan 阅读(169) 评论(0) 推荐(0)
摘要:代理模式(Proxy Pattern) 1. 简介 代理模式是一种结构型设计模式,它允许提供一个代替品或占位符来控制对原对象的访问。代理对象可以在客户端和目标对象之间起到中介的作用,并且可以添加额外的功能。 2. 为什么使用代理模式? 控制访问:代理可以控制对原对象的访问,并可以在访问对象之前或之后 阅读全文
posted @ 2024-08-08 09:09 KenWan 阅读(59) 评论(0) 推荐(0)
摘要:深入理解冒泡排序:原理、实现与优化 1. 引言 冒泡排序是最简单的排序算法之一,它的名字来源于较小的元素会经过交换慢慢"浮"到数列的顶端。尽管在实际应用中,冒泡排序的效率较低,但它是理解排序算法基本原理的起点。本文将详细介绍冒泡排序的原理、Java 实现、优化方法以及其性能分析。 2. 冒泡排序的基 阅读全文
posted @ 2024-08-07 19:15 KenWan 阅读(739) 评论(0) 推荐(0)
摘要:装饰器模式(Decorator Pattern) 1. 简介 装饰器模式是一种结构型设计模式,它允许通过将对象放入包含行为的特殊封装对象中来为原对象动态地添加新的行为。 2. 为什么使用装饰器模式? 动态添加功能:可以在运行时动态地给对象添加功能,而不需要修改原有代码。 遵循开闭原则:可以在不修改现 阅读全文
posted @ 2024-08-06 22:10 KenWan 阅读(83) 评论(0) 推荐(0)
摘要:从输入 URL 到页面加载完成,发生了什么? 1. 输入 URL 当在浏览器地址栏输入 URL(如 https://www.baidu.com)并按下回车键时,整个过程就开始了。 2. DNS 解析 2.1 检查浏览器缓存 浏览器首先检查自身的 DNS 缓存,看是否存有该域名对应的 IP 地址。 2 阅读全文
posted @ 2024-08-06 15:38 KenWan 阅读(82) 评论(0) 推荐(0)
摘要:排序算法:基本概念与分类 1. 引言 排序是计算机科学中最基本且最重要的算法之一。它在数据处理和算法设计中扮演着关键角色。本文将介绍排序算法的基本概念、分类以及常见排序算法的特点,并提供简单的 Java 实现示例。 2. 排序的基本概念 2.1 定义 排序是将一组数据按照特定顺序重新排列的过程。通常 阅读全文
posted @ 2024-08-06 10:06 KenWan 阅读(68) 评论(0) 推荐(0)
摘要:原型模式(Prototype Pattern) 1. 简介 原型模式是一种创建型设计模式,它允许复制已有对象,而无需使代码依赖它们所属的类。该模式声明了一个共同的接口,使用该接口能够复制对象,即使该对象的具体类型未知。 2. 为什么使用原型模式? 性能优化:在某些情况下,创建新对象的成本可能很高,复 阅读全文
posted @ 2024-08-04 21:24 KenWan 阅读(104) 评论(0) 推荐(0)
摘要:Java 实现常见查找算法 1. 引言 查找是计算机科学中最基本和最常用的操作之一。高效的查找算法可以显著提高程序的性能。本文将介绍几种常见的查找算法,包括顺序查找、二分查找、哈希查找以及二叉搜索树查找,并提供 Java 实现。 2. 顺序查找 顺序查找(也称为线性查找)是最简单的查找算法,它按顺序 阅读全文
posted @ 2024-08-04 10:18 KenWan 阅读(87) 评论(0) 推荐(0)
摘要:TCP/IP 网络模型 TCP/IP 模型概述 TCP/IP 模型,全称为传输控制协议/互联网协议(Transmission Control Protocol/Internet Protocol)模型,是互联网的基础通信架构。它将网络通信过程分为几个抽象层,每层负责特定的功能,共同协作以实现数据的可 阅读全文
posted @ 2024-08-03 22:34 KenWan 阅读(229) 评论(0) 推荐(0)
摘要:Java 实现图的关键路径算法 1. 引言 在项目管理和网络规划中,关键路径算法是一个重要的工具。它用于识别项目中最长的路径,这条路径决定了整个项目的最短完成时间。本文将详细介绍关键路径算法的概念、实现方法以及在 Java 中的具体应用。 2. 关键路径的基本概念 2.1 定义 关键路径是有向无环图 阅读全文
posted @ 2024-08-02 21:51 KenWan 阅读(171) 评论(0) 推荐(0)
摘要:建造者模式(Builder Pattern) 1. 简介 建造者模式是一种创建型设计模式,它允许分步骤创建复杂对象。允许使用相同的创建代码生成不同类型和形式的对象。 2. 为什么使用建造者模式? 分步创建:可以分步骤创建复杂对象,每个步骤都可以细化。 可复用:相同的构建过程可以创建不同的表示。 关注 阅读全文
posted @ 2024-08-02 16:25 KenWan 阅读(93) 评论(0) 推荐(0)
摘要:Java 实现图的拓扑排序 1. 引言 拓扑排序是一种对有向无环图(DAG)中的顶点进行排序的算法。它的主要应用场景包括任务调度、编译依赖分析、数据处理工作流等。本文将深入探讨拓扑排序的概念、实现方法以及在 Java 中的具体应用。 2. 拓扑排序的基本概念 2.1 定义 拓扑排序是将 DAG 中的 阅读全文
posted @ 2024-08-01 22:25 KenWan 阅读(132) 评论(0) 推荐(0)
摘要:抽象工厂模式(Abstract Factory Pattern) 1. 简介 抽象工厂模式是一种创建型设计模式,它提供了一种方式,可以将一组具有同一主题的单独的工厂封装起来。它提供了一个接口,用于创建相关的对象家族,而不需要指定它们具体的类。 2. 为什么使用抽象工厂模式? 解耦:客户端代码与具体产 阅读全文
posted @ 2024-08-01 20:00 KenWan 阅读(68) 评论(0) 推荐(0)