算法刷题笔记 (5) 相交链表 合并两个有序数组 买卖股票的最佳时机 有效的括号 二叉树的锯齿形层次遍历 发表于 2022-01-07 更新于 2023-12-15 分类于 算法刷题笔记 相交链表相交链表 解题思路首先计算两个链表的长度len1和len2,对于较长的链表,其指针先向后移动|len1-len2|步,接着两个链表的指针同步向后移动,当两个指针相等时,说明到达了相交链表的第一个节点。 阅读全文 »
算法刷题笔记 (4) 合并两个有序链表 环形链表 二叉树的层序遍历 发表于 2022-01-06 更新于 2023-12-15 分类于 算法刷题笔记 合并两个有序链表合并两个有序链表 解题思路利用归并的思想,两个指针分别指向两个有序链表,不断将两个指针指向的节点较小者加入到新链表的结尾。 阅读全文 »
算法刷题笔记 (3) 两数之和 最大子数组之和 三数之和 发表于 2022-01-05 更新于 2023-12-15 分类于 算法刷题笔记 两数之和两数之和 解题思路 暴力破解,遍历数组中所有的两数之和,得到和为目标值的两个数组元素,时间复杂度达O(n^2) 本题是要找到数组中的两个数,使它们的和为目标值。可以利用Hash表记录已经访问过的元素,在遍历时去查找Hash表中是否已经有访问过的元素,使得它加上当前访问元素的和为目标值。这样的算法时间复杂度为O(n),空间复杂度为O(n) 阅读全文 »
MySQL基础 (1) MySQL概述 发表于 2022-01-04 更新于 2023-12-15 分类于 MySQL基础学习 关系型数据库E-R (entity-relationship) 模型E-R模型主要有三个概念: 实体集:一个实体集对应一张表,表中的一行(记录)对应一个实体 属性:对应于表的一列 联系集 1234ORM思想(Object Relational Mapping,对象关系映射)数据库中的一个表 <---> 一个类表中的一条数据 <---> 类的一个对象表中的一个列 <---> 类中的一个字段(field) 阅读全文 »
算法刷题笔记 (2) 数组中的第K大元素 K个一组翻转链表 手撕快速排序 发表于 2022-01-04 更新于 2023-12-15 分类于 算法刷题笔记 数组中的第K大元素数组中的第K个最大元素 解题思路 利用快速排序的思想,对数组进行划分。则一趟划分完成后有以下情况: 若枢轴最终就是第K大的元素,则直接返回 若枢轴大于第K大的元素,则对枢轴元素左侧的部分进行划分 若枢轴小于第K大的元素,则对枢轴元素右侧的部分进行划分 阅读全文 »
算法刷题笔记 (1) 链表反转 LRU缓存 无重复字符的最长子串 发表于 2022-01-03 更新于 2023-12-15 分类于 算法刷题笔记 链表反转链表反转 解题思路 采用链表原地逆置的思想,设立两个指针pre和cur,初始时pre=nil, cur=head。每次循环时,都使cur和pre向后移动的同时,使得cur.Next指向pre 采用头插法的思想,设立一个头节点,将原链表中的各节点依次插入到头节点后 借助辅助栈实现,从前向后遍历链表并压入栈中,遍历完成后依次将栈中元素弹出构建新链表(空间辅助度达O(n)) 阅读全文 »
GO学习笔记 (2) 文件操作 发表于 2021-12-31 更新于 2023-12-15 分类于 GO语言学习 基本介绍os.File封装所有的文件相关操作,File是一个结构体。File代表一个打开文件的对象。 文件基本操作打开/关闭文件os.Open1234567// 打开文件// Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据。如果出错,错误底层类型是*PathError。func Open(name string) (file *File, err error)// 关闭文件// Close关闭文件f,使文件不能用于读写。它返回可能出现的错误。func (f *File) Close() error Open返回的是File结构体指针 阅读全文 »
GO学习笔记 (1) 继承、接口、多态 发表于 2021-12-31 更新于 2023-12-15 分类于 GO语言学习 继承继承实现方法在Go中,继承采用匿名结构体实现。 1234567891011121314type Student struct{ Name string Age int}type Graduate struct{ Student // 继承Student id int}type PostGraduates struct{ Student // 继承Student Tutor string} 阅读全文 »