当前位置: 首页 > news >正文

Java-排序算法-复盘知识点

刷了24道简单排序题,18道中等排序题之后,给排序算法来个简单的复盘(从明天开始刷动态规划咯)

1.对于找多数元素(出现次数超过一半的元素)可以使用摩尔投票法

2.HashSet的add方法非常实用:如果集合里面不存在这个数,就添加,并且返回true;如果存在,就返回false

3.数组.toCharArray方法可以把字符串变成数组

4. Arrays.equals(str1, str2);可以用来判断两个数组是否相等

5.Arrays.sort()可以把一个数组从小到大排好序,如果需要从大到小排序,可以重写compare方法:

int ans[][]=new int[2][2];
Arrays.sort(ans, new Comparator<int[]>() {@Overridepublic int compare(int[] ans1, int[] ans2) {return ans1[1]-ans2[1];}
});

6.

set2.stream().mapToInt(Integer::intValue).toArray();
//这行代码的作用是将一个Set<Integer>集合转换成一个包含相同整数值的int[]数组。
这个过程通过流操作实现,利用了Java 8的函数式编程特性,使得代码更加简洁和易于理解。

7.HashSet的contains方法可以判断集合里面是否含有这个数

8.

map.put(x,(map.getOrDefault(x,0)+1));
//这一句的意思是如果map里面有键是x的,就把值+1;如果没有,就添加一个键为x值为1的对

9.

map.containsKey(x) //判断是否有键为x的对
map.get(x)//获取键为x的值

10.

ans[a] = String.valueOf(score.length - i);
//计算score字符串的长度减去i的值,将这个结果转换成字符串,
//然后将这个字符串赋值给ans数组在索引a位置上的元素
//这种操作在处理字符串、数组和循环时非常常见,特别是在需要根据某些条件生成或修改数组元素时

11.Math.max()求最大值

12.

 List<List<Integer>> list=new ArrayList<>();List<Integer> list1 = Arrays.asList(0, 0, 0);list.add(list1);//之所以会用List<Integer> list1 = Arrays.asList(0, 0, 0);是因为数组初始化器(即大括号{}中的元素列表)只能用于初始化数组,而不能直接用于初始化集合(如List、Set等)//要初始化一个包含特定元素的列表,你可以使用Arrays.asList()或者ArrayList的构造函数结合add()方法。//ArrayList的构造函数结合add()方法List<Integer> list1 = new ArrayList<>();  
list1.add(0);  
list1.add(0);  
list1.add(0);

13.

Set<List<Integer>> uniqueList=new LinkedHashSet<>();
//通过LinkedHashSet实现了对List<Integer>列表的去重
for(List<Integer> x:list){uniqueList.add(x);
}
List<List<Integer>> list2=new ArrayList<>(uniqueList);//uniqueList中的元素被复制到一个新的ArrayList中//由于uniqueList是一个Set,它自动处理元素的唯一性。如果尝试添加一个已经存在于集合中的元素(在这个上下文中是List<Integer>对象),那么该元素将不会被添加。
//这意味着,如果list中包含重复的List<Integer>列表(即内容完全相同的列表),那么uniqueList中将只包含这些列表的唯一副本。
//注意,这里的“内容完全相同”是指列表中的元素顺序和值都相同。如果两个列表包含相同的元素但顺序不同,它们将被视为不同的列表。

14.

Math.abs(a-b)
//Math.abs(sum-target) 在编程中是一个表达式,
//用于计算 a(某个总和或数值)与 b(目标值)之间的差的绝对值。

15.

List<String> list = map.getOrDefault(key, new ArrayList<String>());
//从map中获取与key相关联的字符串列表。如果map中包含该key,则返回对应的字符串列表;
//如果不包含,则返回一个新的空字符串列表,并将这个列表赋值给list变量

16.

Map<Integer,Integer>map=new TreeMap<>();
//TreeMap 可以实现内部排序。当你将键值对添加到 TreeMap 时,这些键值对会根据键的自然顺序
//(如果键实现了 Comparable 接口)或者根据创建 TreeMap 时指定的 Comparator 进行排序

17.

for (Map.Entry<Integer, Integer> entry : map.entrySet()) {//可以实现Map<Integer, Integer>的遍历int key = entry.getKey(); int count = entry.getValue();}

18.复习一下我的主页里面的《Java中等题-对链表进行插入排序》

class Solution {public ListNode insertionSortList(ListNode head) {if(head==null){return head;}ListNode drummy=new ListNode(0);drummy.next=head;ListNode lastSort=head,curr=head.next;while(curr!=null){if(lastSort.val<=curr.val){lastSort=lastSort.next;}else{ListNode pre=drummy;while(pre.next.val<=curr.val){pre=pre.next;}lastSort.next=curr.next;curr.next=pre.next;pre.next=curr;}curr=lastSort.next;}return drummy.next;}
}

19.复习一下我主页里面的《Java中等题-排序链表》

class Solution {public ListNode sortList(ListNode head) {if(head==null||head.next==null){ //如果链表为空或者只有一个数,那就直接返回return head;}ListNode slow=head,fast=head;while(fast.next!=null&&fast.next.next!=null){//使用快慢指针法找到中点fast=fast.next.next;slow=slow.next;}fast=slow.next;//用fast来指向第二段链表的开头slow.next=null;//把链表分成两段ListNode left=sortList(head);ListNode right=sortList(fast);ListNode vhead=new ListNode(-1);ListNode curr=vhead;while(left!=null&&right!=null){if(left.val<= right.val){curr.next=left;left=left.next;}else{curr.next=right;right=right.next;}curr=curr.next;//不要漏掉}curr.next=left!=null?left:right;//把剩下的那段直接接上去return vhead.next;}
}

20.Math.pow 是 Java 中的一个静态方法,用于计算第一个参数的第二个参数次幂的值
由于 Math.pow 返回的是 double 类型的值,即使你传入的参数是整数,结果也会是 double 类型的

21. 复习手搓大根堆,可以看我的主页的《Java中等题-数组中的第k个最大元素(力扣)》

class Solution {public int findKthLargest(int[] nums, int k) {int heapSize=nums.length;buildHeap(nums,heapSize);for(int i=nums.length-1;i>=nums.length-k+1;i--){swap(nums,i,0);heapSize--;maxHeap(nums,heapSize,0);}return nums[0];
}
public static void buildHeap(int[] nums,int heapSize){for(int i=heapSize/2;i>=0;i--){maxHeap(nums,heapSize,i);}}
public static void maxHeap(int[] nums,int heapSize,int maxSize){int l=maxSize*2+1;int r=maxSize*2+2;int i=maxSize;if(l<heapSize&&nums[l]>nums[i]){i=l;}if(r<heapSize&&nums[r]>nums[i]){i=r;}if(i!=maxSize){swap(nums,i,maxSize);maxHeap(nums,heapSize,i);}
}
public static void swap(int[] nums,int a,int b){int temp=nums[a];nums[a]=nums[b];nums[b]=temp;
}
}

22.

PriorityQueue<Integer> pq = new PriorityQueue<>(new Comparator<Integer>() {@Override// 比较器实现,根据元素在map中的频率来比较两个元素  public int compare(Integer a, Integer b) {return map.get(a) - map.get(b);}
});

23.Arrays.fill(dp, 1);//初始化dp的每个元素为1

24.复习大根堆的经典使用场景,看我的主页的《Java中等题-有序矩阵中第k小的元素(力扣)》

25.

int res[]=Arrays.copyOfRange(temp,0,p);
//int res[] = Arrays.copyOfRange(temp, 0, p); 这行代码在Java中的意思是从一个已存在的整型数组temp中复制一部分元素到一个新的整型数组res中
int from:起始索引(包含),即从哪里开始复制。索引从0开始。
int to:结束索引(不包含),即复制到哪里停止。注意,这个索引处的元素不会被复制。

相关文章:

Java-排序算法-复盘知识点

刷了24道简单排序题&#xff0c;18道中等排序题之后&#xff0c;给排序算法来个简单的复盘&#xff08;从明天开始刷动态规划咯&#xff09; 1.对于找多数元素&#xff08;出现次数超过一半的元素&#xff09;可以使用摩尔投票法。 2.HashSet的add方法非常实用&#xff1a;如…...

HarmonyOS 原生智能之语音识别实战

HarmonyOS 原生智能之语音识别实战 背景 公司很多业务场景使用到了语音识别功能&#xff0c;当时我们的语音团队自研了语音识别模型&#xff0c;方案是云端模型加端侧SDK交互&#xff0c;端侧负责做语音采集、VAD、opus编码&#xff0c;实时传输给云端&#xff0c;云端识别后…...

基于Gromacs的蛋白质与小分子配体相互作用模拟教程

在生命科学的广阔领域中&#xff0c;蛋白质与小分子配体之间的相互作用扮演着至关重要的角色。这些相互作用不仅影响着生物体内的各种生命活动&#xff0c;如信号传导、代谢调控和药物作用等&#xff0c;同时也是药物设计和开发的核心内容。因此&#xff0c;深入理解并模拟这些…...

Ubuntu下python3.12安装, 分布式 LLM 推理 exo 安装调试过程, 运行自己的 AI 集群

创作不易 只因热爱!! 热衷分享&#xff0c;一起成长! “你的鼓励就是我努力付出的动力” —调试有点废,文章有点长,希望大家用心看完,肯定能学废,感谢. 1. Ubuntu下python3.12安装 1.1 导入 Python 的稳定版 PPA,不用编译 sudo add-apt-repository ppa:deadsnakes/ppa sudo…...

pytest-bdd 行为驱动自动化测试

引言 pytest-bdd 是一个专为Python设计的行为驱动开发&#xff08;BDD&#xff09;测试框架&#xff0c;它允许开发人员使用自然语言&#xff08;如Gherkin&#xff09;来编写测试用例&#xff0c;从而使测试用例更易于理解和维护。 安装 通过pip安装 pip install pytest-b…...

PostgreSQL11 | 触发器

本文章代码已在pgsql11.22版本上运行且通过&#xff0c;展示页由pgAdmin8.4版本提供 上一篇总结了原著的第十章有关pgsql的视图的用法&#xff0c;本篇将总结pgsql的触发器的用法。 触发器 使用触发器可以自动化完成一些在插入数据或修改数据时&#xff0c;某些需要同期同步的…...

cesium canvas广告牌

在有些业务中&#xff0c;对场景中的广告牌样式要求比较高&#xff0c;需要动态显示一些数据&#xff0c;这个时候&#xff0c;我们可以通过将复杂背景样式制作成图片&#xff0c;通过canvas绘制图片和动态数据&#xff0c;从而达到比较好的显示效果。 1 CanvasMarker 类封装 …...

使用Floyd算法求解两点间最短距离

Floyd算法 Floyd算法又称为Floyd-Warshell算法&#xff0c;其实Warshell算法是离散数学中求传递闭包的算法&#xff0c;两者的思想是一致的。Floyd算法是求解多源最短路时通常选用的算法&#xff0c;经过一次算法即可求出任意两点之间的最短距离&#xff0c;并且可以处理有负权…...

linux“how_paras.sh“ E212: 无法打开并写入文件

经过一番测试和查找&#xff0c; [6localhost bin]$ find / -name "hello.sh" 2>/dev/null /home/6/bin/hello.sh [6localhost bin]$ ls hello.sh ls: 无法访问hello.sh: 没有那个文件或目录&#xff0c;为什么在/bin文件下却不能打开&#xff0c; [6localhost …...

CSS mask-image 实现边缘淡出过渡效果

使用场景 在生产环境中&#xff0c;遇到一个需求&#xff0c;需要在一个深色风格的大屏页面中&#xff0c;嵌入 Google Maps。为了减少违和感&#xff0c;希望地图四边能够淡出过渡。 这里的“淡出过渡”&#xff0c;关键是淡出&#xff0c;而非降低透明度。 基于 Google Ma…...

电子元器件—电容和电感(一篇文章搞懂电路中的电容和电感)(笔记)(面试考试必备知识点)电容和电感作用、用途、使用、注意事项、特点等(面试必备)-笔记(详解)

作者&#xff1a;Whappy 座右铭&#xff1a;不曾拥有&#xff0c;何来失去&#xff01; 时间&#xff1a;2024年8月2日08:40:04 一、电容的作用 储能&#xff1a; 电容器通过充电储存电荷在电容板上&#xff0c;形成电场储存电能。当需要释放储存的电能时&#xff0c;电荷…...

2024HDU Contest 5 Problem 5

题目链接 从大到小枚举gcd的值 d d d&#xff0c;以及编号为 d d d的倍数的点&#xff0c; [ d , 2 d , 3 d , … ] [d,2d,3d,\dots] [d,2d,3d,…]。 然后对于任何一条边 ( x , y ) (x,y) (x,y)&#xff0c;如果 x x x的子树和 y y y的子树里都有编号为 d d d倍数的点&#xf…...

nGQL入门

引言 nGQL&#xff08;NebulaGraph Query Language&#xff09;是用于操作 NebulaGraph 的查询语言。它的语法类似于 Cypher&#xff0c;但有自己独特的特性。以下是一些 nGQL 的基本语法和操作示例&#xff0c;以帮助你入门。 基本概念 节点&#xff08;Vertex&#xff09;…...

[CP_AUTOSAR]_系统服务_DEM模块(二)功能规范介绍

目录 1、DEM 功能规范描述1.1、Startup behavior1.2、Monitor re-initialization 在前面 《[CP_AUTOSAR]_系统服务_DEM模块&#xff08;一&#xff09;》文中&#xff0c;简要介绍了 DEM 模块的功能、与其它模块之间的功能交互&#xff0c;本文将接着介绍 DEM 模块的功能规范。…...

Linux中yum、rpm、apt-get、wget的区别,yum、rpm、apt-get常用命令,CentOS、Ubuntu中安装wget

文章目录 一、常见Linux发行版本二、Linux中yum、rpm、apt-get、wget的区别2.1 yum2.2 rpm2.3 apt-get2.4 wget2.5 总结 三、CentOS中yum的作用3.1 yum清空缓存列表3.2 yum显示信息3.3 yum搜索、查看3.4 yum安装3.5 yum删除、卸载程序3.6 yum包的升级、降级 四、Ubuntu中apt-ge…...

IPython的使用技巧2

关注我&#xff0c;持续分享逻辑思维&管理思维&面试题&#xff1b; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导&#xff1b; 推荐专栏《10天学会使用asp.net编程AI大模型》&#xff0c;目前已完成所有内容。一顿烧烤不到的费用&#xff0c;让人能紧跟时代的…...

win10打开程序闪退的解决方法,亲测好用

当我们在使用win10系统的时候&#xff0c;可能会遇到安装某些程序后无法正常使用&#xff0c;一打开就闪退&#xff0c;或者点击右下角图标就消失了&#xff0c;而其他程序却可以正常打开使用。下面小编就来和大家分享亲测好用的win10打开程序闪退的解决办法。 问题原因分析&a…...

木舟0基础学习Java的第二十一天(数据库,MySQL,SQLyog)

数据库 数据库&#xff1a;按照数据结构来组织 存储数据的厂库 数据管理系统(Database Management System,DBMS)&#xff1a;一套操作和管理数据库的软件 用于简历 使用 维护数据库 关系型数据库&#xff1a;采用关系模型作为数据组织方式 逻辑结构是一张二维表 由行和列组成…...

python-鼠标绘画线条程序

闲来无聊简单编写了一个绘图小程序。 主要思路 主要是基于Python中的内置模块turtle编写的&#xff0c;简单扩展了一下&#xff0c;通过绑定事件能够达到鼠标绘制、删除、存储已经绘制图案的线条这几个功能。 路径结构 -draw- define.py- main.py- myturtle.py使用 点住鼠…...

【Python实战】如何优雅地实现 PDF 去水印?

话接上篇&#xff0c;自动化处理 PDF 文档&#xff0c;完美实现 WPS 会员功能 小伙伴们更关心的是如何去除 PDF 中的水印~ 今天&#xff0c;就来分享一个超简单的 PDF 去水印方法~ 1. 原理介绍 在上一篇中&#xff0c;我们介绍了如何将 PDF 文档转换成图片&#xff0c;图片…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

linux arm系统烧录

1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 &#xff08;忘了有没有这步了 估计有&#xff09; 刷机程序 和 镜像 就不提供了。要刷的时…...

如何将联系人从 iPhone 转移到 Android

从 iPhone 换到 Android 手机时&#xff0c;你可能需要保留重要的数据&#xff0c;例如通讯录。好在&#xff0c;将通讯录从 iPhone 转移到 Android 手机非常简单&#xff0c;你可以从本文中学习 6 种可靠的方法&#xff0c;确保随时保持连接&#xff0c;不错过任何信息。 第 1…...

数据链路层的主要功能是什么

数据链路层&#xff08;OSI模型第2层&#xff09;的核心功能是在相邻网络节点&#xff08;如交换机、主机&#xff09;间提供可靠的数据帧传输服务&#xff0c;主要职责包括&#xff1a; &#x1f511; 核心功能详解&#xff1a; 帧封装与解封装 封装&#xff1a; 将网络层下发…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

【配置 YOLOX 用于按目录分类的图片数据集】

现在的图标点选越来越多&#xff0c;如何一步解决&#xff0c;采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集&#xff08;每个目录代表一个类别&#xff0c;目录下是该类别的所有图片&#xff09;&#xff0c;你需要进行以下配置步骤&#x…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

华硕a豆14 Air香氛版,美学与科技的馨香融合

在快节奏的现代生活中&#xff0c;我们渴望一个能激发创想、愉悦感官的工作与生活伙伴&#xff0c;它不仅是冰冷的科技工具&#xff0c;更能触动我们内心深处的细腻情感。正是在这样的期许下&#xff0c;华硕a豆14 Air香氛版翩然而至&#xff0c;它以一种前所未有的方式&#x…...