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

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100)

在这里插入图片描述
在这里插入图片描述

package com.yue.test;import org.junit.Test;import java.util.ArrayList;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.List;/*** @Author: 夜雨* @Date: 2021-12-08-10:31* @Description:* @Version 1.0*/
public class tsest01 {@Testpublic void demo01() {String one = "2 22 1 11 4 44 5 55 3 33";String two = "1 7 2 3";LinkedList<String> baseOne = new LinkedList<>(Arrays.asList(one.split(" ")));LinkedList<String> baseTwo = new LinkedList<>(Arrays.asList(two.split(" ")));int resultSize = baseTwo.size() / 2;List<List<Integer>> result = new ArrayList<>();for (int j = baseTwo.size() - 1; j >= 0; j -= 2) {List<Integer> tmp = new ArrayList<>();for (int k = 0; k < baseOne.size() - 1; ) {int time = Integer.parseInt(baseOne.get(k));if (Integer.parseInt(baseTwo.get(j)) > time && Integer.parseInt(baseTwo.get(j - 1)) <= time) {tmp.add(Integer.valueOf(baseOne.get(k + 1)));baseOne.remove(k);baseOne.remove(k);continue;}k += 2;}if (tmp.isEmpty()){tmp.add(-1);}result.add(tmp);}}}

改进

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] aStr = scanner.nextLine().split(" ");int[] a = new int[aStr.length];for (int i = 0; i < aStr.length; i++) {a[i] = Integer.parseInt(aStr[i]);}List<Pair> t = new ArrayList<>();for (int i = 0; i < a.length; i += 2) { // 第一行输入两个一对,为发布者的发布时刻和发布内容t.add(new Pair(a[i], a[i + 1]));}t.sort(null); // 按发布时间排序String[] bStr = scanner.nextLine().split(" ");int[] b = new int[bStr.length];for (int i = 0; i < bStr.length; i++) {b[i] = Integer.parseInt(bStr[i]);}List<List<Integer>> msg = new ArrayList<>();for (int i = 0; i < b.length - 1; i += 2) {msg.add(new ArrayList<>());}for (Pair pair : t) {int x = pair.x;int y = pair.y;int ans = -1;for (int i = b.length - 2; i >= 0; i -= 2) { // 从优先级高的订阅者开始遍历,优先匹配优先级高的订阅者if (b[i] <= x && x < b[i + 1]) { // 如果发布时刻在订阅时间中,订阅者收到发布内容ans = i / 2;break; // 只有优先级最高的收到}}if (ans != -1) {msg.get(ans).add(y); // 收到内容}}for (List<Integer> list : msg) {if (list.isEmpty()) {System.out.println(-1);} else {for (int i : list) {System.out.print(i + " ");}System.out.println();}}}static class Pair implements Comparable<Pair> {int x, y;public Pair(int x, int y) {this.x = x;this.y = y;}@Overridepublic int compareTo(Pair other) {return Integer.compare(this.x, other.x);}}
}

2. 分割数组的最大差值(100)

在这里插入图片描述

import java.util.Scanner;
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] nums = new int[n];long sum = 0;for (int i = 0; i < n; i++) {int num = scanner.nextInt();sum += num;nums[i] = num;}long maxAbs = 0, leftSum = 0;for (int i = 0; i < n - 1; i++) {leftSum += nums[i];// rightSum = sum - leftSum, 差值 = rightSum - leftSum = Math.abs(sum - leftSum)maxAbs = Math.max(maxAbs, Math.abs(sum - 2 * leftSum));}System.out.println(maxAbs);}
}

3. 数值同化(200)-BFS

存在一个m*n的二维数组,其成员取值范围为0,1,2。其中值为1的元素具备同化特性,每经过1s,将上下左右值为0的元素同化为1。而值为2的元素,免疫同化。将数组所有成员随机初始化为0或2,再将矩阵的[0,0]元素修改成1,在经过足够长的时间后,求矩阵中有多少个元素是0或2(即0和2数量之和)
输入:输入的前两个数字是矩阵大小。后面的数字是矩阵内容。
如:4 4
[[0, 0, 0, 0], [0, 2, 2, 2], [0, 2, 0, 0], [0, 2, 0, 0]]
输出:返回矩阵中非1的元素个数

import java.util.*;  public class MatrixAssimilation {  static class Point {  int x, y;  Point(int x, int y) {  this.x = x;  this.y = y;  }  }  public static int countNonOnes(int[][] matrix) {  int m = matrix.length;  int n = matrix[0].length;  // 使用队列来进行BFS  Queue<Point> queue = new LinkedList<>();  // 初始化,将所有初始值为1的点加入队列  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  if (matrix[i][j] == 1) {  queue.offer(new Point(i, j));  }  }  }  // 定义四个方向的偏移量  int[][] directions = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};  // 广度优先搜索  while (!queue.isEmpty()) {  Point current = queue.poll();  for (int[] dir : directions) {  int newX = current.x + dir[0];  int newY = current.y + dir[1];  // 检查新坐标是否有效且值为0  if (newX >= 0 && newX < m && newY >= 0 && newY < n && matrix[newX][newY] == 0) {  // 同化该点,并将其加入队列以便进一步同化其相邻的0  matrix[newX][newY] = 1;  queue.offer(new Point(newX, newY));  }  }  }  // 计算非1的元素个数  int count = 0;  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  if (matrix[i][j] != 1) {  count++;  }  }  }  return count;  }  public static void main(String[] args) {  Scanner scanner = new Scanner(System.in);  int m = scanner.nextInt();  int n = scanner.nextInt();  int[][] matrix = new int[m][n];  for (int i = 0; i < m; i++) {  for (int j = 0; j < n; j++) {  matrix[i][j] = scanner.nextInt();  }  }  // 确保起始点为1  if (matrix[0][0] != 1) {  matrix[0][0] = 1;  }  System.out.println(countNonOnes(matrix));  }  
}

4. 数组组成的最小数字(100)在这里插入图片描述

public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] str = scanner.nextLine().split(",");Arrays.sort(str, (a, b) -> {int lengthA = a.length();int lengthB = b.length();if (lengthA != lengthB) {return lengthA - lengthB;} else {return a.compareTo(b);}});StringBuilder stringBuilder = new StringBuilder();if (str.length == 1) {stringBuilder.append(str[0]);System.out.println(stringBuilder);} else if (str.length == 2) {String s1 = str[0] + str[1];String s2 = str[1] + str[0];stringBuilder.append(s1.compareTo(s2) < 0 ? s1 : s2);System.out.println(stringBuilder);} else {String[] res = Arrays.copyOf(str, 3);Arrays.sort(res);for (String r : res) {System.out.print(r);}}}
}

5. 垃圾信息拦截(200)

问题描述:按照如下规则进行垃圾信息识别,发送者A符合以下条件之一,则认为A为垃圾信息发送者:
A发送短信的接收者中,没有发过短信给A的人数L>5
A发送的短信数-A接收的短信数M>10
如果存在X,A发送给X的短信数-A接收到X的短信数N>5

输入描述第一行为条目数目,接下来几行是具体的条目,每个条目是一对ID,第一个数字是发送者ID,后面的数字是接收者ID,中间空格隔开,所有的ID都是为无符号整型,ID最大值为100;
同一个条目中,两个ID不会相同(不会自己给自己发信息)
最后一行为指定ID

输出描述:输出该ID是否为垃圾短信发送者,并且按序列输出L M的值(由于N值不唯一,不需要输出)

例:输入:

15
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
14 1
1 15
1

输出:

true 13 13

输入:

15
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
14 1
1 15
2

输出:

false 0 -1
public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);List<Msg> msgList = new ArrayList<>();int count = Integer.parseInt(scanner.nextLine());for (int i=0;i<count;i++){String[] str = scanner.nextLine().split(" ");msgList.add(new Msg(Integer.parseInt(str[0]),Integer.parseInt(str[1])));}Boolean flag = false;int A = Integer.parseInt(scanner.nextLine());List<Msg> aSendList = msgList.stream().filter(msg -> msg.sendUser==A).collect(Collectors.toList());List<Integer> receiveFromA = aSendList.stream().map(msg -> {return msg.receiveUser;}).distinct().collect(Collectors.toList());List<Msg> otherSendList = msgList.stream().filter(msg -> msg.sendUser!=A).collect(Collectors.toList());List<Integer> aReceiveList = msgList.stream().filter(msg -> msg.receiveUser==A).map(msg -> {return msg.sendUser;}).collect(Collectors.toList());int M = aSendList.size()-aReceiveList.size();int L = aSendList.size();for (int i=0;i<otherSendList.size();i++){if (receiveFromA.contains(otherSendList.get(i).sendUser)){L-=1;}}if (M>10 || L>5){flag = true;System.out.print(flag + " " +   L + " " + M);}else {List<Msg> msgList1 = new ArrayList<>();for (int i = 0;i<receiveFromA.size();i++) {int Y = 0;int X = 0;int id = receiveFromA.get(i);Y = aReceiveList.stream().filter(m -> id ==m).collect(Collectors.toList()).size();X = aSendList.stream().filter(msg -> msg.receiveUser == id).collect(Collectors.toList()).size();if (Math.abs(X-Y)>5){flag = true;break;}}System.out.print(flag + " " +   L + " " + M);}}static  class  Msg{int sendUser;int receiveUser;Msg( int sendUser, int receiveUser){this.sendUser = sendUser;this.receiveUser = receiveUser;}}
}

6. 最长字符串的长度(二)(200)

在这里插入图片描述

package com.yue.test;import java.util.Scanner;/*** @Author: 夜雨* Create Date Time: 2024-09-02-8:26* Update Date Time:* @Version 1.0* @Description:* @see*/
public class Test {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String s = scanner.next();int result = findLongestSubstringLength(s);System.out.println(result);}// 定义一个私有静态方法,用于找出满足条件的最长子字符串的长度private static int findLongestSubstringLength(String s) {int n = s.length();int maxLength = 0;for (int i = 0; i < n; i++) {int countL = 0, countO = 0, countX = 0;for (int j = 0; j < n; j++) {// 计算当前字符的索引,处理环形字符串的情况int index = (i + j) % n;// 获取当前字符char ch = s.charAt(index);if (ch == 'l') countL++;else if (ch == 'o') countO++;else if (ch == 'x') countX++;if (countL % 2 == 0 && countO % 2 == 0 && countX % 2 == 0) {maxLength = Math.max(maxLength, j + 1);}}}return maxLength;}
}

相关文章:

刷题记录(2)

1. HWOD机试 - 模拟消息队列(100) package com.yue.test;import org.junit.Test;import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List;/*** Author: 夜雨* Date: 2021-12-08-10:31* Description:* Version 1.0*/ public…...

JVM中的GC过程

堆内存结构&#xff1a;在详细讨论GC过程之前&#xff0c;需要了解JVM堆内存的结构。JVM堆内存通常被分为新生代&#xff08;Young Generation&#xff09;和老年代&#xff08;Old Generation&#xff09;&#xff0c;其中新生代又进一步细分为Eden区&#xff08;Eden Space&a…...

Python实战项目:天气数据爬取+数据可视化(完整代码)_python爬虫实战

一、选题的背景 随着人们对天气的关注逐渐增加&#xff0c;天气预报数据的获取与可视化成为了当今的热门话题&#xff0c;天气预报我们每天都会关注&#xff0c;天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…...

FFmpeg源码:compute_frame_duration函数分析

一、compute_frame_duration函数的定义 compute_frame_duration函数定义在FFmpeg源码&#xff08;本文演示用的FFmpeg源码版本为7.0.1&#xff09;的源文件libavformat/demux.c中&#xff1a; /*** Return the frame duration in seconds. Return 0 if not available.*/ stat…...

ARM 异常处理(21)

异常的流程&#xff1a; 首先&#xff1a; 在硬件上阶段&#xff1a; 这里是4大步3小步 然后是 异常处理&#xff1a; 这里主要是保存现场&#xff0c;进行异常处理 然后是 异常返回&#xff1a; 主要指 恢复现场&#xff0c; 再跳转回去。 首先硬件上&#xff…...

我开源了我的新闻网站项目

&#x1f389; 前言 暑假时写了一个Web项目&#xff0c;感觉做的还是有模有样的&#xff0c;不仅做了前端&#xff0c;还加了后端并连了数据库。最近也是将它开源了&#xff0c;一来是为了熟悉一下Github流程和Git使用命令&#xff0c;二来也是想和大家分享一下自己的成果&…...

LlamaIndex 使用 RouterOutputAgentWorkflow

LlamaIndex 中提供了一个 RouterOutputAgentWorkflow 功能&#xff0c;可以集成多个 QueryTool&#xff0c;根据用户的输入判断使用那个 QueryEngine&#xff0c;在做查询的时候&#xff0c;可以从不同的数据源进行查询&#xff0c;例如确定的数据从数据库查询&#xff0c;如果…...

设计模式学习-责任链模式

概念 使多个对象都有机会处理请求&#xff0c;从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有对象处理它为止. 代码编写 using UnityEngine; using System.Collections; public class ChainOfResp…...

【全网最全】2024年数学建模国赛B题31页完整建模过程+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 2024数学建模国赛B题 【全网最全】2024年数学建模国赛B题31页完整建模过程成品论文matlab/python代码等&#xff08;后续会更新「首先来看看目前已有的资料…...

第二十一届华为杯数学建模经验分享之资料分享篇

今天给大家分享一些数学建模的资料&#xff0c;通过这些资料的学习相信你们一定在比赛中获得好的成绩。今天分享的资料包括美赛和国赛的优秀论文集、研赛的优秀论文集、推荐数学建模的相关书籍、智能算法的学习PPT、python机器学习的书籍和数学建模经验分享与总结&#xff0c;其…...

使用 OpenSSL 创建自签名证书

mkdir -p /etc/nginx/conf.d/cert #2、创建私钥 openssl genrsa -des3 -out https.key 1024 提示输入字符&#xff1a; 输入字符&#xff1a;rancher [rootocean-app-1a-01 cert]# openssl genrsa -des3 -out https.key 1024 Generating RSA private key, 1024 bit long modulu…...

EmguCV学习笔记 VB.Net 9.1 VideoCapture类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

Rspack 1.0 发布了!

文章来源&#xff5c;Rspack Team 项目地址&#xff5c;https://github.com/web-infra-dev/rspack Rspack 是基于 Rust 编写的下一代 JavaScript 打包工具&#xff0c; 兼容 webpack 的 API 和生态&#xff0c;并提供 10 倍于 webpack 的构建性能。 在 18 个月前&#xff0c;我…...

【全网最全】2024年数学建模国赛E题超详细保奖思路+可视化图表+成品论文+matlab/python代码等(后续会更新

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024年数学建模国赛E题成品论文超详细保奖思路可视化图表matlab/python代码等&#xff08;后续会更新「首先来看看目前已有的资料&#xff0c;还…...

数智转型,看JNPF如何成为企业的必备工具

随着数字化转型的浪潮席卷全球&#xff0c;企业面临着前所未有的挑战与机遇。在这一过程中&#xff0c;低代码开发平台作为一种创新的软件开发方式&#xff0c;正逐渐成为企业实现快速迭代和敏捷开发的关键工具。JNPF作为一款领先的低代码开发平台&#xff0c;凭借其强大的功能…...

ArcGIS Pro 发布松散型切片

使用ArcGIS Pro发布松散型切片问题&#xff0c;有时候会出现切片方案写了松散型&#xff0c;但是自动切片完成后依然是紧凑型的问题&#xff0c;这时候可以采用手动修改然后再切片的方式。 1. 发布切片服务 选择手动切片方式 2. 手动修改服务的切片方案文件 修改cache服务…...

奖项再+1!通义灵码智能编码助手通过可信 AI 智能编码工具评估,获当前最高等级

阿里云的通义灵码智能编码助手参与中国信通院组织的可信AI智能编码工具首轮评估&#xff0c;最终获得 4 级评级&#xff0c;成为国内首批通过该项评估并获得当前最高评级的企业之一。 此次评估以《智能化软件工程技术和应用要求 第 2 部分&#xff1a;智能开发能力》为依据&…...

如何使用 yum 在 CentOS 6 上安装 nginx

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 状态 状态&#xff1a; 已弃用 本文涵盖的 CentOS 版本已不再受支持。如果您目前正在运行 CentOS 6 服务器&#xff0c;我们强烈建议升…...

F12抓包05:Network接口测试(抓包篡改请求)

课程大纲 使用线上接口测试网站演示操作&#xff0c;浏览器F12检查工具如何进行简单的接口测试&#xff1a;抓包、复制请求、篡改数据、发送新请求。 测试地址&#xff1a;https://httpbin.org/forms/post ① 抓包&#xff1a;鼠标右键打开“检查”工具&#xff08;F12&#xf…...

OPenCV结构分析与形状描述符(4)计算一个旋转矩形的四个顶点的函数boxPoints()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 找到一个旋转矩形的四个顶点。对于绘制旋转矩形很有用。 该函数找到一个旋转矩形的四个顶点。这个函数对于绘制矩形很有帮助。在C中&#xff0c;…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

ubuntu搭建nfs服务centos挂载访问

在Ubuntu上设置NFS服务器 在Ubuntu上&#xff0c;你可以使用apt包管理器来安装NFS服务器。打开终端并运行&#xff1a; sudo apt update sudo apt install nfs-kernel-server创建共享目录 创建一个目录用于共享&#xff0c;例如/shared&#xff1a; sudo mkdir /shared sud…...

从WWDC看苹果产品发展的规律

WWDC 是苹果公司一年一度面向全球开发者的盛会&#xff0c;其主题演讲展现了苹果在产品设计、技术路线、用户体验和生态系统构建上的核心理念与演进脉络。我们借助 ChatGPT Deep Research 工具&#xff0c;对过去十年 WWDC 主题演讲内容进行了系统化分析&#xff0c;形成了这份…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢&#xff0c;博主的学习进度也是步入了Java Mybatis 框架&#xff0c;目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学&#xff0c;希望能对大家有所帮助&#xff0c;也特别欢迎大家指点不足之处&#xff0c;小生很乐意接受正确的建议&…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户&#xff0c;但你不希望用 root 权限运行 ns-3&#xff08;这是对的&#xff0c;ns3 工具会拒绝 root&#xff09;&#xff0c;你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案&#xff1a;创建非 roo…...