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 文档转换成图片,图片…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...

CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序
一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

莫兰迪高级灰总结计划简约商务通用PPT模版
莫兰迪高级灰总结计划简约商务通用PPT模版,莫兰迪调色板清新简约工作汇报PPT模版,莫兰迪时尚风极简设计PPT模版,大学生毕业论文答辩PPT模版,莫兰迪配色总结计划简约商务通用PPT模版,莫兰迪商务汇报PPT模版,…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.
ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #:…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...