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道简单排序题,18道中等排序题之后,给排序算法来个简单的复盘(从明天开始刷动态规划咯) 1.对于找多数元素(出现次数超过一半的元素)可以使用摩尔投票法。 2.HashSet的add方法非常实用:如…...
HarmonyOS 原生智能之语音识别实战
HarmonyOS 原生智能之语音识别实战 背景 公司很多业务场景使用到了语音识别功能,当时我们的语音团队自研了语音识别模型,方案是云端模型加端侧SDK交互,端侧负责做语音采集、VAD、opus编码,实时传输给云端,云端识别后…...

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

Ubuntu下python3.12安装, 分布式 LLM 推理 exo 安装调试过程, 运行自己的 AI 集群
创作不易 只因热爱!! 热衷分享,一起成长! “你的鼓励就是我努力付出的动力” —调试有点废,文章有点长,希望大家用心看完,肯定能学废,感谢. 1. Ubuntu下python3.12安装 1.1 导入 Python 的稳定版 PPA,不用编译 sudo add-apt-repository ppa:deadsnakes/ppa sudo…...
pytest-bdd 行为驱动自动化测试
引言 pytest-bdd 是一个专为Python设计的行为驱动开发(BDD)测试框架,它允许开发人员使用自然语言(如Gherkin)来编写测试用例,从而使测试用例更易于理解和维护。 安装 通过pip安装 pip install pytest-b…...

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

cesium canvas广告牌
在有些业务中,对场景中的广告牌样式要求比较高,需要动态显示一些数据,这个时候,我们可以通过将复杂背景样式制作成图片,通过canvas绘制图片和动态数据,从而达到比较好的显示效果。 1 CanvasMarker 类封装 …...
使用Floyd算法求解两点间最短距离
Floyd算法 Floyd算法又称为Floyd-Warshell算法,其实Warshell算法是离散数学中求传递闭包的算法,两者的思想是一致的。Floyd算法是求解多源最短路时通常选用的算法,经过一次算法即可求出任意两点之间的最短距离,并且可以处理有负权…...
linux“how_paras.sh“ E212: 无法打开并写入文件
经过一番测试和查找, [6localhost bin]$ find / -name "hello.sh" 2>/dev/null /home/6/bin/hello.sh [6localhost bin]$ ls hello.sh ls: 无法访问hello.sh: 没有那个文件或目录,为什么在/bin文件下却不能打开, [6localhost …...

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

电子元器件—电容和电感(一篇文章搞懂电路中的电容和电感)(笔记)(面试考试必备知识点)电容和电感作用、用途、使用、注意事项、特点等(面试必备)-笔记(详解)
作者:Whappy 座右铭:不曾拥有,何来失去! 时间:2024年8月2日08:40:04 一、电容的作用 储能: 电容器通过充电储存电荷在电容板上,形成电场储存电能。当需要释放储存的电能时,电荷…...
2024HDU Contest 5 Problem 5
题目链接 从大到小枚举gcd的值 d d d,以及编号为 d d d的倍数的点, [ d , 2 d , 3 d , … ] [d,2d,3d,\dots] [d,2d,3d,…]。 然后对于任何一条边 ( x , y ) (x,y) (x,y),如果 x x x的子树和 y y y的子树里都有编号为 d d d倍数的点…...
nGQL入门
引言 nGQL(NebulaGraph Query Language)是用于操作 NebulaGraph 的查询语言。它的语法类似于 Cypher,但有自己独特的特性。以下是一些 nGQL 的基本语法和操作示例,以帮助你入门。 基本概念 节点(Vertex)…...

[CP_AUTOSAR]_系统服务_DEM模块(二)功能规范介绍
目录 1、DEM 功能规范描述1.1、Startup behavior1.2、Monitor re-initialization 在前面 《[CP_AUTOSAR]_系统服务_DEM模块(一)》文中,简要介绍了 DEM 模块的功能、与其它模块之间的功能交互,本文将接着介绍 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
关注我,持续分享逻辑思维&管理思维&面试题; 可提供大厂面试辅导、及定制化求职/在职/管理/架构辅导; 推荐专栏《10天学会使用asp.net编程AI大模型》,目前已完成所有内容。一顿烧烤不到的费用,让人能紧跟时代的…...

win10打开程序闪退的解决方法,亲测好用
当我们在使用win10系统的时候,可能会遇到安装某些程序后无法正常使用,一打开就闪退,或者点击右下角图标就消失了,而其他程序却可以正常打开使用。下面小编就来和大家分享亲测好用的win10打开程序闪退的解决办法。 问题原因分析&a…...
木舟0基础学习Java的第二十一天(数据库,MySQL,SQLyog)
数据库 数据库:按照数据结构来组织 存储数据的厂库 数据管理系统(Database Management System,DBMS):一套操作和管理数据库的软件 用于简历 使用 维护数据库 关系型数据库:采用关系模型作为数据组织方式 逻辑结构是一张二维表 由行和列组成…...

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

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

网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析
Java求职者面试指南:Spring、Spring Boot、Spring MVC与MyBatis技术解析 一、第一轮基础概念问题 1. Spring框架的核心容器是什么?它的作用是什么? Spring框架的核心容器是IoC(控制反转)容器。它的主要作用是管理对…...