12.21_黑马数据结构与算法笔记Java

news2025/3/6 12:08:57

//最近在复习,,java的进度会比较慢一些

目录

219 排序算法 基数排序2

220 排序算法 java排序

221 排序 e01 根据另一个数组次序排序

222 排序 e02 根据出现频率排序

 thinking:关于比较器

223 排序 e03 最大间距 解法1(超出内存限制)

224 排序 e03 最大间距 解法2

225 排序 e03 最大间距 解法3

226 排序 e03 最大间距 解法4

227 图 基本概念

228 图 表示方式

229 图 java表示

230 图 DFS


219 排序算法 基数排序2

不可以先排百位再排个位的原因是因为,越到后面,优先级越高,最后排个位的话,个位的优先级最高,则会出现错误。

220 排序算法 java排序

221 排序 e01 根据另一个数组次序排序

 题目说明:


 竟然忘了。 

 这里的i是指每一个元素,而不是索引。 


 这是原先的,现在需要一开始的都按照数组二来排,因此要做更改。

于是,就按照数组二来排。

count[i]--:这个元素出现的次数减一。 

在以上程序之后还要再加一个这个增强for,因为原先和数组二有重复元素的部分以及被count[i]--了,所以现在数组一中只剩下没有被采纳的数据,因此,再做一次增强for就好。 

222 排序 e02 根据出现频率排序

把负数也纳进去,因此要i+100 

 将这个数组放到流上面,对它进行包装,然后调用比较器方法(这里后面详细谈),之后再将包装类变为int,再变成数组return回去。

 thinking:关于比较器

在Java中,我们可以使用`Arrays.stream(nums).boxed().sorted((a, b) -> { ... })`来实现一个自定义的比较器来进行排序。

在这个特定的例子中:

```java
Arrays.stream(nums).boxed().sorted((a,b)->{
    int af = count[a + 100];
    int bf = count[b + 100];

    if (af < bf){
        return -1;
    } else if(af >bf){
        return 1;
    }
```

题目说,频率是按照升序来排列的,因此,af是第一个元素,bf是第二个元素。如果第一个元素的频率小于第二个元素的频率,那么就让它们保持原样并继续向下遍历下一个元素,因此返回-1。

为什么返回-1,是因为:

当你调用 return -1; 这行代码的时候,你告诉 Java 要执行以下的操作:

  • 当前正在比较的两个元素不需要改变其相对顺序;
  • 继续向下游览其他尚未比较过的元素。

这是因为当我们遇到相同时,我们希望保留原来的顺序关系。也就是说,如果有两个元素具有相同的频率,我们不关心它们之间的具体顺序,只要它们仍然保持原来的位置即可。这就是为什么要返回 -1的原因——它意味着当前的两个元素无需互换位置,可以继续保持原有的顺序。而下一次循环会再次检查这些元素是否还需要调整顺序。

- 否则,如果我们发现第一个元素的频率大于第二个元素的频率,我们就需要将它放在前面以确保正确性。因此我们将返回 1 表示我们需要交换这两个元素的位置。
最后,他说要按照数值进行降序排列。

参考以上。 前者是要添加的。不要死记硬背,多试试就知道是谁减谁了。

集合进阶-10-TreeMap的基本使用和基础练习1_哔哩哔哩_bilibili

 因此,例子中,是b-a

223 排序 e03 最大间距 解法1(超出内存限制)

但是桶的个数太多了,超出了内存限制。

224 排序 e03 最大间距 解法2

因此桶的排序改为基数排序

这个max是用来while循环时,判断何时退出循环的。因为在基数排序前,已经找出整个数组中最大的数字了,因此当m>max之后,就可以退出循环了。 

225 排序 e03 最大间距 解法3

如果最小值和最大值差值特别大的时候,最大的桶减最小的桶的差值就是桶的个数这个计算方式,就会产生很多的桶,降低运行速度。

小tips:

将1变成range 

226 排序 e03 最大间距 解法4

不用再比较每一个桶内的元素的大小了,只要比较桶间的大小就可以了。所以我只要确定桶间的元素大于桶内的元素就可以了。

为什么要加空桶:

空桶的引入会使数据间隔变得更小,实际就是数学上分子不变分母变大使得range的值更小,在数据分入桶内时避免桶内间距大于桶间间距。

227 图 基本概念

有多少个箭头往外走,就是多少个出度;相反,如此。 

228 图 表示方式

 建议用邻接表,因为邻接矩阵比较浪费空间。

229 图 java表示

230 图 DFS

 访问过的点要记录一下,这样下次就不要再访问它了,避免进入死循环。

用栈。弹栈的时候是与入栈的顺序是反的,因此:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1329105.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

千帆 AppBuilder 初体验,不仅解决解决了我筛选简历的痛苦,更是让提效10倍!

文章目录 &#x1f31f; 前言&#x1f31f; 什么是百度智能云千帆 AppBuilder&#x1f31f; 百度智能云千帆 AppBuilder 初体验&#x1f31f; 利用千帆AppBuilder搭建简历小助手&#x1f31f; 让人眼前一亮的神兵利器 - 超级助理 &#x1f31f; 前言 前两天朋友 三掌柜 去北京…

【Linux进阶之路】线程

文章目录 一、初始线程1.概念2.执行3.调度4.切换 二、线程控制1.创建2.等待3.分离4.退出5.取消 三、线程安全1.互斥1.1初始1.2理解1.3锁1.3.1概念1.3.2原理1.3.4死锁 2.同步2.1概念2.2原理 3.生产消费者模型 总结尾序 一、初始线程 1.概念 简单的概念&#xff1a; 线程就是一…

NPOI 导出Excel提示内容有问题的解决方法

NPOI导出Excel 使用Microsoft Excel 打开提示内容有问题&#xff0c;如下&#xff1a; 原因是&#xff1a;在使用NPOI导出excel时&#xff0c;获得 workbook.Write(ms)生成的 MemoryStream后&#xff0c;使用了 ms.GetBuffer()返回文件内容&#xff0c;导致生成的 Excel文件结尾…

关于频谱仪是如何来实现辐射功率测量

1.1 内部基本原理框架 首先是接收到外部信号输入&#xff0c;然后经过可变衰减器衰减&#xff0c;接着进行变频&#xff0c;接着经过带宽带通滤波器进行滤波&#xff0c;滤波后的信号送入检波器进行信号检测&#xff0c;再经对数放大器放大后&#xff0c;送入低通滤波器进行视频…

【网络技术】BGP 基础与概述

该笔记主要作用与 BGP 路由协议的基础和概述讲解&#xff0c;其萌芽作用 参考视频&#xff1a;红茶三杯 关键词阐述&#xff1a;AS 独立自治网络系统机构 前置知识 在我们学习 BGP 路由之前所学习的所有动态路由策略&#xff0c;都同属一个路由类中&#xff1a;IGP BGP 路由协…

位运算:Leetcode137.只出现一次的数字(2)

题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 示例 1&#xff1a; 输入&#xff1a;nums [2,2,3,2] 输出&#xff1a;3示例 2&#xff1a; 输入&…

【网络安全】学习Web安全必须知道的一本书

【文末送书】今天推荐一本网络安全领域优质书籍。 目录 正文实战案例1&#xff1a;使用Docker搭建LAMP环境实战案例2&#xff1a;使用Docker搭建LAMP环境文末送书 正文 学习Web安全离不开Web&#xff0c;那么&#xff0c;需要先来学习网站的搭建。搭建网站是每一个Web安全学习…

数据结构---算法的空间复杂度

文章目录 空间复杂度概念实例 空间复杂度 概念 空间复杂度也是一个数学表达式&#xff0c;是对一个算法在运行过程中临时占用存储空间大小的量度 。 空间复杂度不是程序占用了多少bytes的空间&#xff0c;因为这个也没太大意义&#xff0c;所以空间复杂度算的是变量的个数。…

超级逼真人脸生成,Stable Diffusion的3个关键技巧

大家好&#xff0c;你是否曾想过&#xff0c;为什么别人可以使用AI图像生成技术生成如此逼真的人脸&#xff0c;而自己的尝试却充满了错误和瑕疵&#xff0c;让人一眼看出是假的。尝试过调整提示和设置&#xff0c;但似乎仍无法与他人的质量相匹配。 本文将带大家了解使用Stab…

提示“由于找不到mfc140u.dll,无法继续执行代码”如何解决?

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是找不到某个动态链接库文件&#xff0c;比如mfc140u.dll。这个问题可能会导致某些应用程序无法正常运行或打开。 一、关于找不到mfc140u.dll文件造成会的问题 mfc140u.dll是Visual C中的一个…

【华为鸿蒙系统学习】- HarmonyOS4.0之App项目开发|自学篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 &#x1f4ab;个人格言:"没有罗马,那就自己创造罗马~" 目录 创建鸿蒙第一个App项目 项目创建 工程目录区 预览区 运行Hello World 基本工程目录 ws:工…

吴恩达RLHF课程笔记

1.创建偏好数据集 一个prompt输入到LLM后可以有多个回答&#xff0c;对每个回答选择偏好 比如{prompt,answer1,answer2,prefer1} 2.根据这个数据集&#xff08;偏好数据集&#xff09;&#xff0c;创建reward model&#xff0c;这个model也是一个LLM,并且它是回归模型&#…

ASP.Net实现姓名添加查询(三层架构)

目录 演示功能&#xff1a; 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 点击Button添加姓名 步骤&#xff1a; 1、建文件 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper&#xff08;对数据库进行操作&#xff09;…

如何选择出最适合的backbone模型?图像分类模型性能大摸底

到2023年图像分类backbone模型已经拓展到了几十个系列&#xff0c;而有的新算法还在采样vgg、resnet做backbone&#xff0c;比如2022年提出的GDIP-YOLO还在用VGG16做IA参数预测&#xff0c;那是在浪费计算资源并限制了模型性能的提升&#xff0c;应该将目光放到现在的最新模型中…

Unity | HybridCLR 热更新(Windows端)

目录 一、准备工作 1.环境相关 2.Unity中配置 二、热更新 1.创建 HotUpdate 热更新模块 2.安装和配置HybridCLR 3.配置PlayerSettings 4.创建热更新相关脚本 5.打包dll 6.测试热更新 一、准备工作 1.环境相关 安装git环境。Win下需要安装visual studio 2019或更高版…

STM32能够做到数据采集和发送同时进行吗?

STM32能够做到数据采集和发送同时进行吗&#xff1f; 在开始前我有一些资料&#xff0c;是我根据自己从业十年经验&#xff0c;熬夜搞了几个通宵&#xff0c;精心整理了一份「STM32的资料从专业入门到高级教程工具包」&#xff0c;点个关注&#xff0c;全部无偿共享给大家&…

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四&#xff1a;更多的空间连接 在上一节中&#xff0c;我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数&#xff0c;以及一些简单的示例。在本节中&#xff0c;我们将用它们做一些更详细的事情。 提示&#xff1a;写完文章后&#xff0c;目录可以…

C# WPF上位机开发(QT vs WPF)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 最近经常收到朋友们的私信&#xff0c;他们对C# WPF开发很感兴趣&#xff0c;但是呢&#xff0c;正当准备学习的时候&#xff0c;又有人告诉他们应…

UG阵列面、阵列集合特征和阵列特征的区别

阵列面 对面进行阵列&#xff0c;当实体中被切除特征的时候可以使用阵列面&#xff0c;当这个命令去阵列一个实体的时候&#xff0c;阵列的是一个片体&#xff0c;优点是速度快&#xff0c;缺点是功能较简单&#xff1b; 阵列几何特征 对实体进行阵列&#xff0c;可以一次性选…

WPF组合控件TreeView+DataGrid之DataGrid封装

&#xff08;关注博主后&#xff0c;在“粉丝专栏”&#xff0c;可免费阅读此文&#xff09; wpf的功能非常强大&#xff0c;很多控件都是原生的&#xff0c;但是要使用TreeViewDataGrid的组合&#xff0c;就需要我们自己去封装实现。 我们需要的效果如图所示&#x…