数据结构与算法
文章平均质量分 67
嘻嘻你好呀
欢迎交流讨论
展开
-
二分查找的进阶理解
二分查找写在前面因为最近在做二分查找一类的题目,又常常被二分的细节之处所困扰,故此写出这篇笔记帮助理解,本篇笔记也许有很多漏洞,如有还望指出因为我现在是使用Java语言,所以本篇笔记代码均是Java去完成的本篇文章数组长度均为6,且是递增数组二分查找的几种情况标准的二分查找查找区间的左边查找区间的右边其它情况大多数也可以根据这三种情况去进行变化,不过关键还是在于处理细节这个地方先做一个解释,首先二分是建立在一个有序数组,标准二分就是像下面这样nums = [1,2,原创 2022-04-14 23:34:02 · 364 阅读 · 0 评论 -
广度优先搜索 / 深度优先搜索
文章目录广度优先搜索 / 深度优先搜索第 7 天733. 图像渲染695. 岛屿的最大面积第 8 天617. 合并二叉树116. 填充每个节点的下一个右侧节点指针广度优先搜索 / 深度优先搜索广度优先搜索:每一层进行遍历深度优先搜索:每一列进行遍历因为最近在刷leetcode初级算法,做到了广度优先搜索和深度优先搜索的地方,发现有些题目呀还是不能一下解出 ,在此进行记录解题第 7 天733. 图像渲染图像渲染可以看做画图里面的油漆桶工具该题目使用深度优先遍历,我们需要先找到初始格子的颜色原创 2022-03-09 22:53:03 · 357 阅读 · 0 评论 -
树与哈希表---最大堆
最大堆主要了解最大堆的上浮和下沉代码位置:MaxHeap.java1.初步了解二叉堆是一颗完全二叉树(区别于满二叉树)(完全二叉树,就是存数据按照空间顺序)堆中某个结点的值总是不大于其父节点的值通常这种堆称为最大堆(相应的可以定义最小堆)下层的某一元素不一定小于上层的某一元素可以知道的是最上面的那个数一定是最大的,每一个节点都比他的子树中任意一个数大由于这是一颗完全二叉树,所以我们完全可以使用数组去表示2.一些准备工作因为代码涉及到上浮和下沉,所以我们需要获取某一个节点的父原创 2022-02-21 09:53:58 · 2894 阅读 · 0 评论 -
树与哈希表---二分平衡树(AVL)
AVL平衡树主要了解什么是AVL,以及如何保证树的平衡代码位置:AVLTreeMap.java1.初步了解✨对于任意一个节点,左子树和右子树的高度差不能超过1名字缘由:G.M.Adelson-Velsky和E.M.Landis是一种最早的自平衡二分搜索树结构满二叉树一定是平衡二叉树,高度最低完全二叉树也是平衡二叉树,叶子节点深度相差不为1AVL平衡树是对BST二分搜索树进行了改善因此我们对每个节点引入了下面两个属性**高度:**记录每一个节点的高度,取每个节点的最深的那条路*原创 2022-02-20 17:32:53 · 488 阅读 · 0 评论 -
树与哈希表---二分搜索树(BST)
二分搜索树1.何为二分搜索树二分搜索树本身就是二叉树,但是又具备一些规则:对于每个节点而言,大于其左边节点的所有值,小于其右边节点的所有值同样,每个节点的子树也是一个二分搜索树,二分搜索数中的元素要具有可比性,树中的元素不能重复2.添加元素不管是当前的操作,还是之后的操作,都会有两种写法吗,迭代and递归先看一下添加元素迭代:这个很好理解,我们只需要从头结点开始比较,小于头结点则想左走,大于则向右走,直到节点的下面为空,我们就将该元素插入即可public void add(E e) {原创 2022-02-19 16:06:37 · 369 阅读 · 0 评论 -
分治回溯---数独
数独如图,一个9*9的方阵,格子中可以填1-9,每一行不能有相同的数字,每一列也不能有相同的数字,同时每一个小的九宫格也不能有相同的数字像上图这样我们可以表示成5 3 0 0 7 0 0 0 0 6 0 0 1 9 5 0 0 0 0 9 8 0 0 0 0 6 0 8 0 0 0 6 0 0 0 3 4 0 0 8 0 3 0 0 1 7 0 0 0 2 0 0 0 6 0 6 0 0 0 0 2 8 0 0 0 0 4 1 9 0 0 5 0 0 0 0 8 0 0 7 9原创 2022-01-21 21:46:19 · 2598 阅读 · 0 评论 -
分治回溯---棋盘覆盖
问题描述在一个????????×???????? (????≥????)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格.显然,特殊方格在棋盘中可能出现的位置有????^???? 种,因而有????^????种不同的棋盘.棋盘覆盖问题要求用4种不同形状的L型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个L型骨牌不得重叠覆盖.可以使用递归的思想去做:首先如下图,这种最基础的格子就是2*2的也就是一个L+一个“不同格”然后我们可以类推44的是什么样的首先,我们可以将这个原创 2022-01-19 09:58:51 · 240 阅读 · 0 评论 -
Java数据结构与算法(更新中)
✨数据结构与算法源码存放地Github:https://github.com/sanshisi/DS一、概念介绍1.数据结构概述数据之间的关系1.1逻辑结构线性结构:线性结构中的数据元素之间是一对一的关系树形结构:树形结构中的数据元素之间存在一种一对一的层次关系图形结构:图形结构的数据元素是多对多的关系1.2物理结构顺序存储结构:开辟一组连续的空间存储数据链式存储结构:开辟一组随机的空间存储数据2.算法概述2.1什么是算法是解决特定问题求解步骤的描述,分析问原创 2022-01-10 18:51:30 · 1672 阅读 · 0 评论 -
数据结构与算法:3.单项环形链表解决约瑟夫问题
package com.study.linkedList;public class Josefu { public static void main(String[] args) { // 测试 构建的环形链表 和 遍历是否可以通过 CricleSingleLinkedList circleSingleLinkedList = new CricleSingleLinkedList(); circleSingleLinkedList.addBoy(1原创 2021-11-05 19:15:10 · 106 阅读 · 0 评论 -
数据结构与算法:2.队列
文章目录介绍普通队列环形队列介绍对列:先进先出,和生活中的排队是一个道理1)队列是一个有序列表,可以用数组或是链表来实现。2)遵循先入先出的原则。即:先存入队列的数据,要先取出。后存入的要后取出3)示意图:(使用数组模拟队列示意图)普通队列在代码实现中【maxsize】是队列的最大容量【front】是代表队列的头部数据的前一个定位【rear】是代表队列尾部的数据的定位package com.study.queue;import java.util.Scanner;public原创 2021-09-30 21:19:09 · 80 阅读 · 0 评论 -
数据结构与算法:1.稀疏数组
引入一下当我们需要去存储这个棋盘的时候,会发现我们会存储很多一样的值,也就是没有意义的数据由此我们可以使用稀疏数组来保存数据基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:记录数组一共有几行几列,有多少个不同的值把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模代码实现package com.study.sparsearry;import java.util.Date;public cl原创 2021-09-30 18:45:04 · 108 阅读 · 0 评论