数据结构和算法
文章平均质量分 84
林寻星辰
这个作者很懒,什么都没留下…
展开
-
面试题(二十五)设计模式
单一职责原则一个类,应当只有一个引起它变化的原因;即一个类应该只有一个职责。就一个类而言,应该只专注于做一件事和仅有一个引起变化的原因,这就是所谓的单一职责原则。该原则提出了对对象职责的一种理想期望,对象不应该承担太多职责,正如人不应该一心分为二用。唯有专注,才能保证对象的高内聚;唯有单一,才能保证对象的细粒度。对象的高内聚与细粒度有利于对象的重用。一个庞大的对象承担了太多的职责,当客户端需要该对象的某一个职责时,就不得不将所有的职责都包含进来,从而造成冗余代码。里氏替换原则。原创 2023-02-14 09:28:31 · 1322 阅读 · 8 评论 -
算法设计与分析(屈婉玲)视频笔记day2
• 序列求和基本公式: 等差数列 等比数列 调和级数• 估计序列和: 放大法求上界 用积分做和式的渐近的界• 应用:计数循环过程的基本运算次数原创 2023-02-13 23:40:07 · 1410 阅读 · 8 评论 -
面试题(二十四)数据结构与算法
Java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个不同的键可能会有相同的hash值,因此,可能会被集合认为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是至关重要的。原创 2023-02-13 13:10:32 · 960 阅读 · 12 评论 -
算法设计与分析
有 n 项任务,每项任务加工时间已知.从 0时刻开始陆续安排到一台机器上加工. 每个任务的完成时间是从 0 时刻到任务加工截止的时间. 求: 总完成时间(所有任务完成时间之和)最短的安排方案.原创 2023-02-12 22:30:09 · 4171 阅读 · 4 评论 -
初级算法之树
树比链表稍微复杂,因为链表是线性数据结构,而树不是。树的问题可以由 广度优先搜索 或 深度优先搜索 解决。在本章节中,我们提供了一个对于练习 广度优先遍历 很好的题目。我们推荐以下题目:二叉树的最大深度,验证二叉搜索树,二叉树的层次遍历 和 将有序数组转换为二叉搜索树。输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。原创 2023-01-08 16:52:01 · 559 阅读 · 0 评论 -
初级算法之链表
node 不应该是链表的最后一个节点,而应该是链表中的一个实际节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。链表的所有值都是 唯一的,并且保证给定的节点 node 不是链表中的最后一个节点。输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。给你一个链表,删除链表的倒数第 n **个结点,并且返回链表的头结点。定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。给定单向链表的头指针和一个要删除的节点的值,定义一个函数删除该节点。原创 2022-12-27 16:45:10 · 494 阅读 · 0 评论 -
初级算法之字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。原创 2022-12-13 15:21:48 · 644 阅读 · 0 评论 -
数据结构与算法之图的应用
非递归中序遍历的过程上图分别是先序、中序、后序遍历通过规律我们可以看到他们之间的位置分配//伪代码void solve(int preL,int inL,int n){if(n == 0) return;//n等于0的时候什么都不做(n真的会右等于0的时候吗?为什么写他?)调用完了之后右边没有元素,此时n等于0,进行判断正常结束进程if(n == 1){post[postL] == pre[preL];return;}//只有一个结点的时候,pre、in、post都应该等于同一个数字roo原创 2022-12-05 15:57:15 · 453 阅读 · 0 评论 -
数据结构和算法之如何建立图
初始化一个有VertexNum个顶点但没有边的图输入格式Nv NeV1 V2 Weight......邻接表:G[N]为指针数组,对应矩阵每一行一个链表,只存非0元素初始化一个有VertexNum个顶点但没有边的图原创 2022-12-04 22:10:24 · 956 阅读 · 0 评论 -
数据结构和算法之图的遍历
遍历:把图里面每个顶点都访问一遍而且不能有重复的访问当访问完了一个节点所有的灯后,一定原路返回对应着堆栈的出栈入栈的一个行为深度优先搜索的算法描述xx实例说明第1步:访问A。第2步:访问(A的邻接点)C。在第1步访问A之后,接下来应该访问的是A的邻接点,即"C,D,F"中的一个。但在本文的实现中,顶点ABCDEFG是按照顺序存储,C在"D和F"的前面,因此,先访问C。第3步:访问(C的邻接点)B。在第2步访问C之后,接下来应该访问C的邻接点,即"B和D"中一个(A已经被访问过,就不算在内)。原创 2022-12-02 21:43:28 · 1259 阅读 · 0 评论 -
初级算法之数组
i++){=0){}i++){=0){i++){}}}原创 2022-11-29 18:38:21 · 467 阅读 · 0 评论 -
数据结构和算法之图
包含1. 一组顶点:通常用V(Vertex)表示顶点集合2. 一组边:通常用E(Edge)表示边的集合1. 边是顶点对:(v,w)属于E,其中v,w属于V2. 有向边表示从v指3.不考虑重边和自回路抽象数据类型定义1.类型名称:图(Graph)2. 数据对象集:G(V,E)由一个非空的有限顶点集合V和一个有限边集合E组成(可以一条边都没有,但不 能一个顶点都没有)3. 操作集:对于任意图G属于Graph,以及v属于V,e属于E。原创 2022-11-28 21:02:42 · 486 阅读 · 0 评论 -
初级算法之数组
给你一个整数数组 nums 和一个整数 k ,判断数组中是否存在两个 不同的索引 i 和 j ,满足 nums[i] == nums[j] 且 abs(i - j)原创 2022-11-27 16:42:35 · 615 阅读 · 0 评论 -
初级算法之数组
默认第一天买是价格最低的时候,最大利润为零.遍历数组,如果当前的价格低于初始的价格,就把当前加个赋值给最低价,否则就判断当前价格减去买入的最低价的差值和最大利润比较.给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。//先反转全部的元素。不要使用额外的空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。原创 2022-11-26 23:05:14 · 175 阅读 · 0 评论 -
高度平衡的二叉搜索树简介
高度平衡的二叉搜索树是二叉搜索树的特殊表示形式,旨在提高二叉搜索树的性能。但这个数据结构具体的实现方式,超出了我们这章的内容,也很少会在面试中被考察。但是了解高度平衡二叉搜索树的的基本概念,以及如何运用它帮助你进行算法设计是非常有用的。以上内容来自力扣。原创 2022-11-26 21:00:21 · 881 阅读 · 2 评论 -
数据结构和算法(二叉搜索树)
二叉搜索树是二叉树的一种特殊形式。二叉搜索树具有以下性质:每个节点中的值必须大于(或等于)其左侧子树中的任何值,但小于(或等于)其右侧子树中的任何值。二叉搜索树(BST)是二叉树的一种特殊表示形式,它满足如下特性:每个节点中的值必须大于(或等于)存储在其左侧子树中的任何值。每个节点中的值必须小于(或等于)存储在其右子树中的任何值。二叉搜索树主要支持三个操作:搜索、插入和删除。在本章中,我们将讨论如何在二叉搜索树中搜索特定的值。根据BST的特性,对于每个节点:如果目标值等于节点的值,则返回节点;原创 2022-11-19 14:27:37 · 486 阅读 · 0 评论