数据结构
文章平均质量分 82
ReEchooo
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(4)——搜索算法
定义:需要在“树”中或者“图”中搜索到我们需要的序列或者位置。特点:通常是给定了一个“树”或“图”,然后要求里面满足要求的部分常用的有三种搜索算法:深度优先搜索、广度优先搜索、回溯算法。一般深度优先搜索能做的,广度优先搜索也能做。回溯算法是用来处理需要穷举出所有情况的问题,典型的为排列组合问题,通常这也称为“暴力搜索”,且回溯算法相比于深度优先搜索和广度优先搜索有一个显著的特点——“恢复现场”。原创 2023-06-04 10:57:56 · 1817 阅读 · 1 评论 -
数据结构与算法(3)——贪心算法
定义:所谓“贪心”,就是每次只考虑自己附近局部范围的最优解,但这种局部最优会导致全局最优。原创 2023-06-04 10:51:17 · 543 阅读 · 0 评论 -
数据结构与算法(2)——滑动窗口
数据结构与算法(2)——滑动窗口1. 滑动窗口的定义与特点2. 滑动窗口的解题思路3. LeetCode中的滑动窗口题1. 滑动窗口的定义与特点定义:滑动窗口就是用左右指针来标记窗口的左右边界,然后左右指针移动就形成了窗口的滑动。特点:从滑动窗口的定义来看,滑动窗口只能解决连续子串的问题,即窗口内的元素在位置上是连续的。2. 滑动窗口的解题思路滑动窗口没有固定的解题模板,需要根据情况灵活变动。(多刷题来掌握)滑动窗口必须需要两个指针,然后需要一些辅助工具,比如可能需要哈希表(即Python中的d原创 2022-01-08 20:51:42 · 891 阅读 · 0 评论 -
数据结构与算法(1)——动态规划
数据结构与算法(1)——动态规划1. 动态规划的定义2. 动态规划题目的特点3. 动态规划的解题步骤3.1 确定状态3.2 转移方程3.3 初始条件和边界情况3.4 计算顺序4. LeetCode中的动态规划题及案例分析1. 动态规划的定义动态规划(英语:Dynamic programming,简称DP)是一种通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。动态规划常常适用于有重叠子问题和最优子结构性质的问题。重叠子问题:原问题能够拆解为有限个的子问题,且这些子问题有重复出现。如果没有重原创 2021-08-16 13:45:34 · 856 阅读 · 0 评论 -
邻接矩阵的动态数组表示法
邻接矩阵的动态数组表示法前言思路实现前言图的构造方法通常有两种,一种是用邻接矩阵,一种是用邻接表。邻接矩阵不涉及链表的操作,所以使用起来会比较方便,但是对于较为稀疏的图而言,邻接矩阵会浪费很多空间。而对于静态数组构建的邻接矩阵而言,这更加是一种空间的浪费。本文给出动态数组的邻接矩阵构造方法。思路对于图中一个顶点的存储数据,用一维动态数组。对于边的权值矩阵,用二维动态数组。实现c语言代码实现#include<stdio.h>#include<stdlib.h>#d原创 2020-07-20 19:42:16 · 391 阅读 · 0 评论