- 博客(54)
- 收藏
- 关注
原创 【算法通关村 Day10】快速排序与归并排序
快速排序与归并排序白银挑战快速排序的原理和实现快速排序(Quick Sort)是一种分治法(Divide and Conquer)策略的排序算法,它通过选择一个“基准”元素,将数组分成两个部分,左边部分小于基准元素,右边部分大于基准元素,然后递归地对这两个部分进行排序。partitionswapprintArray顺序可能在排序后改变。快速排序与归并排序白银挑战快速排序的应用。
2025-02-24 12:45:11
825
原创 【算法通关村 Day9】二分查找与二叉树的中序遍历
二分查找(Binary Search)是一种在已排序的数组中查找某个特定元素的算法。通过每次将查找范围缩小一半来提高查找效率,时间复杂度为 O(log n)。
2025-02-23 13:33:16
778
原创 【算法通关村 Day8】二叉树的深度优先经典问题
给你一个二叉树的根节点root,按,返回所有从根节点到叶子节点的路径。是指没有子节点的节点。这个问题要求我们找到二叉树中所有从根节点到叶子节点的路径。可以使用深度优先搜索(DFS)来遍历树,并在到达叶子节点时将路径添加到结果中。result每个节点访问一次,因此时间复杂度为 O(n),其中 n 是树中节点的个数。最坏情况下,递归栈的深度为树的高度,空间复杂度为 O(h),其中 h 是树的高度。对于平衡树,h ≈ log(n),对于不平衡树,h ≈ n。
2025-02-22 14:48:43
694
原创 【算法通关村 Day7】递归与二叉树遍历
int val;递归实现的核心在于每次对树的左右子树进行递归操作,递归的终止条件是节点为空。当节点不为空时,根据遍历顺序访问当前节点的值。1/ \2 3/ \4 5// 创建二叉树1 2 4 5 34 2 5 1 34 5 2 3 1。
2025-02-21 15:36:07
895
原创 【算法通关村 Day6】二叉树层次遍历
通过中序和后序遍历序列恢复二叉树是一个经典的二叉树构建问题。给定二叉树的中序遍历序列和后序遍历序列,我们可以利用以下步骤进行恢复。:后序遍历的最后一个元素是3,所以树的根节点是3。:在中序遍历数组中,3位于索引位置1{9}33{9}920{15}{15}15{7}{7}7。
2025-02-20 13:52:08
1344
原创 【算法通关村 Day5】Hash和队列的经典问题
哈希存储是通过哈希函数将数据映射到固定大小的数组(或桶)中,使得查找和插入操作的时间复杂度接近O(1)。哈希冲突是指两个或更多的键经过哈希计算后,得到相同的哈希值,导致它们被存储在相同的位置。
2025-02-19 15:32:12
1016
原创 【算法通关村 Day4】栈的基本操作及栈的应用
栈(Stack)是一种线性数据结构,遵循“后进先出”(LIFO, Last In First Out)原则。也就是说,最后插入的元素最先被移除。栈(Stack)可以通过不同的存储结构来实现,主要包括和两种方式。以下是这两种实现方式的基本操作及 Java 代码示例。
2025-02-18 15:54:07
603
原创 【算法通关村 Day3】数组与双指针
new这种方法是在声明时指定数组的大小,数组的元素将被初始化为默认值(对于整型数组,默认值是0这种方法不需要先声明数组的大小,而是直接给出元素值,数组的长度会根据元素个数自动推断。如果你已有一个数组,可以通过等方法来创建新数组并初始化。
2025-02-17 17:50:22
915
原创 【算法通关村 Day2】反转链表
方式二 迭代法(使用 3 个指针) :保存当前节点的 ,这样我们在修改 时,不会丢失对下一个节点的引用。 :将当前节点的 指向前一个节点 ,这样就完成了当前节点的反转。 :将 更新为当前节点,为下一次反转做准备。 :将 移动到下一个节点,继续进行反转。 prev 最终是新的头节点迭代法通过三个指针来逐步反转链表,时间复杂度为 O(n),空间复杂度为 O(1),只用了常数的额外空间。递归终止条件:如果链表为空()或者只有一个节点(),递归就结束,直接返回当前节点 作为新链表的
2025-02-16 15:05:30
661
原创 【Java入门指南 Day15:Java网络编程】
网络编程是现代应用程序的重要组成部分。掌握这些基础知识对于构建可靠的网络应用至关重要。记住要注意资源管理、错误处理和性能优化。Socket是网络通信的基石,提供了端到端的通信机制。想象它就像电话系统,两端通过Socket建立连接后就可以互相通信。
2024-12-18 19:20:45
227
原创 【Java入门指南 Day14: 并发编程:多线程与同步机制】
并发编程是Java中最复杂的主题之一,正确理解和使用这些概念对于开发高性能、可靠的应用程序至关重要。记住要注意线程安全性、性能和死锁预防。synchronized用于实现线程同步,保证代码块或方法在同一时刻只能被一个线程执行。线程在其生命周期中会经历多个状态,理解这些状态及其转换对于正确使用多线程至关重要。原子类提供了线程安全的操作,无需使用synchronized。volatile保证了变量的可见性和有序性,但不保证原子性。线程池通过重用线程来减少线程创建和销毁的开销。
2024-12-18 19:15:02
179
原创 【Java入门指南 Day13: IO与文件处理】
Java的IO系统像是一个管道系统,负责数据的输入和输出。字节流:处理二进制数据字符流:处理文本数据。
2024-12-18 19:11:22
176
原创 【Java入门指南 Day10:异常处理增强鲁棒性】
null &&!// getter方法// 使用示例"订单不能为空"try {"订单验证失败",e。
2024-12-17 15:00:00
336
原创 【Java入门指南 Day9:封装:Java访问控制与类设计】
封装就像是给类的成员加上不同级别的保护,就像我们保护自己的隐私一样,有些信息可以公开,有些需要保护。
2024-12-17 14:54:56
311
原创 【Java入门指南 Day8:多态,抽象类与接口】
/ 常量// 默认public static final// 抽象方法void fly();// 默认public abstract// 默认方法(Java 8+)System.out.println("正常降落");// 静态方法(Java 8+)
2024-12-17 14:48:36
143
原创 【Java入门指南 Day7:继承与组合用于代码复用】
继承是面向对象编程中实现代码复用的基本方式,它建立了类之间的"是一个"(is-a)关系。我们可以把它理解为类之间的父子关系,子类会继承父类的特征和行为。final关键字是Java中的一个多功能修饰符,可用于修饰类、方法和变量。组合表示"有一个"(has-a)关系,通过将其他类的对象作为成员变量来复用代码。理解继承和组合这两种代码复用机制,对于写出良好架构的代码至关重要。super关键字用于引用父类的成员,是连接子类和父类的桥梁。方法重写是子类对父类方法的重新实现。
2024-12-17 14:39:28
375
原创 【Java入门指南 Day6:面向对象编程的类和对象】
想象你在组织一个大型图书馆。面向对象编程就像是把图书馆中的每种事物(书籍、书架、读者、管理员)都看作一个独立的对象,每个对象都有自己的属性(如书的标题、页数)和行为(如借阅、归还)。
2024-12-17 14:32:23
355
原创 【Java入门指南 Day4:数组与字符串深入解析】
想象一下计算机的内存就像一个巨大的储物柜,里面有许多连续的小格子。数组就是在这个储物柜中预订一排连续的格子。当我们创建一个数组时,就相当于在这个储物柜中申请了一段连续的空间。
2024-12-16 14:40:09
441
原创 【Java入门指南 Day3:运算符与流程控制详解】
在下一篇文章中,我们将探讨数组和字符串的使用。在此之前,建议多练习本文中的流程控制结构,尤其是在实际问题解决中灵活运用它们。
2024-12-16 14:33:40
196
原创 【Java入门指南 Day2:数据类型与内存模型】
Java的类型系统是静态类型系统,这意味着所有变量在使用前必须声明类型。理解数据类型对于写出高效、安全的代码至关重要。
2024-12-16 14:27:13
195
原创 【Java入门指南 Day1: Java编程第一课】
Java语言诞生于1995年,由Sun公司(现已被Oracle收购)的James Gosling领导的团队设计开发。它的设计理念是"Write Once, Run Anywhere"(一次编写,到处运行)。JVM(Java Virtual Machine)是Java平台的基石,它提供了一个抽象的计算机环境。下一篇文章,我们将深入探讨Java的基本数据类型和变量系统。
2024-12-16 14:10:25
843
原创 前端开发入门指南Day 17:TypeScript高级类型(泛型,类型守卫,Partial<T>和 Required<T>等)
想象你是一个夜店保安,需要检查进入的人是否满足条件(年龄、着装等)。类型守卫就是代码世界的"保安",它帮助我们在运行时确保数据类型的正确性。// 定义可能的类型// 类型守卫函数// 使用类型守卫// TypeScript现在知道这是一只鸟console.log(`飞行速度:${animal.flySpeed}`);} else {// TypeScript知道这是一只狗console.log(`奔跑速度:${animal.runSpeed}`);
2024-12-05 15:05:05
342
原创 前端开发入门指南Day 16: TypeScript面向对象编程,像搭积木一样构建程序
想象你有一个蛋糕模具。这个模具定义了蛋糕的基本形状,但你可以用它制作很多个蛋糕。在编程中,类就是这个"模具",而对象就是用这个模具"烤"出来的"蛋糕"。// 类就像是一个蛋糕模具// 属性:蛋糕的特征// 口味// 尺寸// 是否装饰// 构造函数:制作蛋糕的配方// 方法:可以对蛋糕做的操作console.log("蛋糕已经装饰好了!");console.log(`这是一个${this.size}寸的${this.flavor}蛋糕`);// 使用模具制作蛋糕。
2024-12-05 14:53:56
468
原创 前端开发入门指南Day 15:TypeScript入门 - 从JavaScript到TypeScript
为什么需要TypeScript? 🤔JavaScript最初是为了在网页中添加简单的交互效果而设计的。但随着Web应用变得越来越复杂,我们用JavaScript构建的应用规模也越来越大:从简单的表单验证发展到完整的企业级应用。想象一下,你正在建造一座大楼,如果你使用的是JavaScript,就像是在用积木搭建 - 虽然灵活,但当建筑变得复杂时,很容易出错。而TypeScript就像是给这些积木加上了榫卯结构(限定了每一块的作用) - 它能确保每块积木都正确地咬合在一起。让我们通过一个简单的例子来
2024-12-05 14:46:08
655
原创 前端开发入门指南Day 14 :数据交互(从Ajax到Axios)和工具进阶(JSON、代理、正则表达式)
HTTP请求Ajax是基础,Axios是现代解决方案异步请求让页面交互更流畅JSON前后端数据交换的标准格式简单易用,人机都可读注意数据类型的转换Proxy优雅地监控数据变化可以用于表单验证这些工具结合使用,能让我们的前端开发更加高效和稳健!
2024-11-30 20:24:00
464
原创 前端开发入门指南Day13:异步编程:从回调到Promise再到async/await
回调函数阶段(~2010)优点:简单直接缺点:回调地狱、错误处理困难Promise阶段(2015~)优点:链式调用、统一错误处理缺点:仍需要then链async/await阶段(2017~)优点:同步代码风格、直观易读缺点:需要注意await的阻塞性每一次技术演进都是为了让异步编程变得更简单、更可靠。理解这个演变过程,能帮助我们更好地选择合适的技术方案。
2024-11-30 20:12:30
281
原创 前端开发入门指南Day12:ES6进阶:面向对象的编程(Class类、继承、模块化)
今天,让我们探索ES6中面向对象编程的革新。想象一下,如果传统的JavaScript是一个手工作坊,那么ES6的类和模块化就是一个现代化工厂,让代码的组织和复用变得更加规范和高效。
2024-11-30 20:01:29
422
原创 前端开发入门指南Day11: ES6基础:更简洁优雅的代码(变量、模版字符串、箭头函数、解构赋值、展开运算符)
优先使用const,只在需要改变变量值时使用let箭头函数中的this指向与普通函数不同,要注意使用场景解构赋值可以大大简化代码,但要避免过度使用模板字符串中可以使用任何JavaScript表达式ES6带来的这些新特性让JavaScript变得更加强大和易用。欢迎在评论区共同讨论!
2024-11-30 19:53:36
430
原创 前端开发入门指南Day10: BOM:浏览器窗口的控制(Location对象、定时器函数、本地存储)
你有没有想过,当我们使用浏览器时,是如何控制窗口大小、获取屏幕信息、存储数据的呢?今天,让我们一起探索浏览器对象模型(Browser Object Model,简称BOM)的世界!
2024-11-30 19:44:11
314
原创 前端开发入门指南Day 8:JavaScript的函数(创建和使用、作用域、闭包)
函数就像是一个包装好的"操作包",它可以帮我们把一系列操作打包起来,需要时随时使用。这就像我们把"刷牙-洗脸-梳头"这些动作打包成"早上的事务"一样。// 没有使用函数时,每次打招呼都要写三行代码console.log("你好!");console.log("今天天气真好!");console.log("欢迎来到JavaScript世界!");// 使用函数后,封装成一个简单的"打招呼"包console.log("你好!");console.log("今天天气真好!");
2024-11-30 19:30:57
201
原创 前端开发入门指南Day 7:JavaScript初识:让网页活起来的魔法
小伙伴们,想象一下如果网页是一个精心布置的舞台,那么HTML就是搭建的道具,CSS是精美的装饰,而JavaScript就是让这个舞台充满魔力的魔法师。今天,让我们一起揭开JavaScript的神秘面纱。✨。
2024-11-30 19:19:53
145
原创 前端开发入门指南Day 6:Grid布局与动画特效
* 固定宽度 *//* 百分比 *//* fr单位(份数) *//* 混合单位 *//* repeat函数 *//* 自动填充 *//* 固定高度 *//* 自动高度 *//* 最小最大值 */掌握网格系统的基本概念熟练使用grid-template-columns和grid-template-rows理解grid-area的使用掌握响应式Grid布局。
2024-11-22 20:46:47
244
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人