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

lintcode 552 · 创建最大数 【算法 数组 贪心 hard】

题目

https://www.lintcode.com/problem/552/description

描述
给出两个长度分别是m和n的数组来表示两个大整数,数组的每个元素都是数字0-9。从这两个数组当中选出k个数字来创建一个最大数,其中k满足k <= m + n。选出来的数字在创建的最大数里面的位置必须和在原数组内的相对位置一致。返回k个数的数组。你应该尽可能的去优化算法的时间复杂度和空间复杂度。样例
样例 1:输入:nums1 = [3, 4, 6, 5], nums2 = [9, 1, 2, 5, 8, 3],k = 5
输出:[9, 8, 6, 5, 3]
解释:
从第一个数组选择[6, 5],从第二个数组选择[9, 8, 3]
样例 2:输入:nums1 = [6, 7], nums2 = [6, 0, 4],k = 5
输出:[6, 7, 6, 0, 4]
解释:
从第一个数组选择[6, 7],从第二个数组选择[6, 0, 4]
样例 3:输入:nums1 = [3, 9], nums2 = [8, 9],k = 3
输出:[9, 8, 9]
解释:
从第一个数组选择[9],从第二个数组选择[8, 9]

 //思路: 左边选i个,右边选k - i个,merge出最大的/*参考:C++答案地址:https://blog.csdn.net/qq_31552435/article/details/52216546比较双端队列【具有队列,栈的特性】 大小的逻辑https://blog.csdn.net/Olivia_CFS/article/details/121596084和C++答案这篇博客不同的是,java判断两个LinkedList的大小,需要自己写而C++ 的vector本身就是可比较的

答案

public class Solution {/*** @param nums1: an integer array of length m with digits 0-9* @param nums2: an integer array of length n with digits 0-9* @param k: an integer and k <= m + n* @return: an integer array*/public int[] maxNumber(int[] nums1, int[] nums2, int k) {//思路: 左边选i个,右边选k - i个,merge出最大的/*参考:C++答案地址:https://blog.csdn.net/qq_31552435/article/details/52216546比较双端队列【具有队列,栈的特性】 大小的逻辑https://blog.csdn.net/Olivia_CFS/article/details/121596084和C++答案这篇博客不同的是,java判断两个LinkedList的大小,需要自己写而C++ 的vector本身就是可比较的*/int len1 = nums1.length, len2 = nums2.length;int start = Math.max(k - len2, 0);int end = Math.min(k, len1);LinkedList<Integer> path = null;for (int k1 = start; k1 <= end; k1++) {LinkedList<Integer> path1 = f(nums1, k1);LinkedList<Integer> path2 = f(nums2, k - k1);// System.out.println("path1:" + path1);//System.out.println("path2:" + path2);LinkedList<Integer> cmp = connect(path1, path2);// System.out.println("cmp: " + cmp);//System.out.println("path:" + path);if (path != null) {for (int i = 0; i < cmp.size(); i++) {if (path.get(i) != cmp.get(i)) {if (cmp.get(i) > path.get(i)) {path = cmp;}break;}}} else {path = cmp;}}if(path.size()>0 && path.get(path.size()-1) ==null){path.removeLast();}int[] ans = new int[path.size()];for (int i = 0; i < path.size(); i++) {ans[i] = path.get(i);}return ans;}/*·输入数据[1,6,5,4,7,3,9,5,3,7,8,4,1,1,4][4,3,1,3,5,9]21输出数据[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,1,4,1,3,5,9]期望答案[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,3,5,9,1,1,4]*/public static LinkedList<Integer> connect(LinkedList<Integer> ll1, LinkedList<Integer> ll2) {//https://blog.csdn.net/Olivia_CFS/article/details/121596084,比较逻辑参考C++代码LinkedList<Integer> ll = new LinkedList<>();while (ll1.size() + ll2.size() > 0) {//参考:https://blog.csdn.net/Olivia_CFS/article/details/121596084//检查ll1,ll2谁更大while (ll1.isEmpty() && !ll2.isEmpty())ll.add(ll2.pollFirst());while (!ll1.isEmpty() && ll2.isEmpty())ll.add(ll1.pollFirst());int max =1;int i1 =0,i2 =0;boolean findMax = false;int n1 = ll1.size(),n2 =ll2.size();while (i1<n1 && i2 <n2){if(ll2.get(i2) >ll1.get(i1)){max =2;findMax =true;break;}else if(ll2.get(i2) < ll1.get(i1)){max =1;findMax =true;break;}else{i1++;i2++;}}//对于有的测试用例;这里很关键if(findMax){ //如果找到最大的了,比如  ll1= 1 2 3 4  和 ll2=1 2 4  ,ll2更大if(max ==1)ll.add(ll1.pollFirst());if(max ==2)ll.add(ll2.pollFirst());}else{//没有找到更大的,比如  ll1= 1 2 3  ll2= 1 2 3 4   那么ll2 更大if(n1>n2)ll.add(ll1.pollFirst());else ll.add(ll2.pollFirst());}}return ll;}public static LinkedList<Integer> f(int[] nums, int k) {int drop = nums.length - k;LinkedList<Integer> ll = new LinkedList<>();for (int num : nums) {while (drop > 0 && ll.size() > 0 && ll.peekLast() < num) {ll.removeLast();drop--;}ll.add(num);}while (ll.size() > k) {ll.removeLast();}return ll;}}

本地测试代码

public class LC552 {public static int[] maxNumber(int[] nums1, int[] nums2, int k) {//思路: 左边选i个,右边选k - i个,merge出最大的/*参考:C++答案地址:https://blog.csdn.net/qq_31552435/article/details/52216546比较双端队列【具有队列,栈的特性】 大小的逻辑https://blog.csdn.net/Olivia_CFS/article/details/121596084和C++答案这篇博客不同的是,java判断两个LinkedList的大小,需要自己写而C++ 的vector本身就是可比较的*/int len1 = nums1.length, len2 = nums2.length;int start = Math.max(k - len2, 0);int end = Math.min(k, len1);LinkedList<Integer> path = null;for (int k1 = start; k1 <= end; k1++) {LinkedList<Integer> path1 = f(nums1, k1);LinkedList<Integer> path2 = f(nums2, k - k1);// System.out.println("path1:" + path1);//System.out.println("path2:" + path2);LinkedList<Integer> cmp = connect(path1, path2);// System.out.println("cmp: " + cmp);//System.out.println("path:" + path);if (path != null) {for (int i = 0; i < cmp.size(); i++) {if (path.get(i) != cmp.get(i)) {if (cmp.get(i) > path.get(i)) {path = cmp;}break;}}} else {path = cmp;}}if(path.size()>0 && path.get(path.size()-1) ==null){path.removeLast();}int[] ans = new int[path.size()];for (int i = 0; i < path.size(); i++) {ans[i] = path.get(i);}return ans;}/*·输入数据[1,6,5,4,7,3,9,5,3,7,8,4,1,1,4][4,3,1,3,5,9]21输出数据[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,1,4,1,3,5,9]期望答案[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,3,5,9,1,1,4]*/public static LinkedList<Integer> connect(LinkedList<Integer> ll1, LinkedList<Integer> ll2) {//https://blog.csdn.net/Olivia_CFS/article/details/121596084,比较逻辑参考C++代码LinkedList<Integer> ll = new LinkedList<>();while (ll1.size() + ll2.size() > 0) {//参考:https://blog.csdn.net/Olivia_CFS/article/details/121596084//检查ll1,ll2谁更大while (ll1.isEmpty() && !ll2.isEmpty())ll.add(ll2.pollFirst());while (!ll1.isEmpty() && ll2.isEmpty())ll.add(ll1.pollFirst());int max =1;int i1 =0,i2 =0;boolean findMax = false;int n1 = ll1.size(),n2 =ll2.size();while (i1<n1 && i2 <n2){if(ll2.get(i2) >ll1.get(i1)){max =2;findMax =true;break;}else if(ll2.get(i2) < ll1.get(i1)){max =1;findMax =true;break;}else{i1++;i2++;}}//对于有的测试用例;这里很关键if(findMax){ //如果找到最大的了,比如  ll1= 1 2 3 4  和 ll2=1 2 4  ,ll2更大if(max ==1)ll.add(ll1.pollFirst());if(max ==2)ll.add(ll2.pollFirst());}else{//没有找到更大的,比如  ll1= 1 2 3  ll2= 1 2 3 4   那么ll2 更大if(n1>n2)ll.add(ll1.pollFirst());else ll.add(ll2.pollFirst());}}return ll;}public static LinkedList<Integer> f(int[] nums, int k) {int drop = nums.length - k;LinkedList<Integer> ll = new LinkedList<>();for (int num : nums) {while (drop > 0 && ll.size() > 0 && ll.peekLast() < num) {ll.removeLast();drop--;}ll.add(num);}while (ll.size() > k) {ll.removeLast();}return ll;}public static void main(String[] args) {test99();//test99ok();// test1();//test2();// test3();//test4();}public static void test99() {int[] nums1 =arr99, nums2 = arr100;int k1 = k99;int[] data1 = maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + ",");}System.out.println();int[] nums11 =arr99, nums21 = arr100;int k11 = k99;int[] data11 = new Solution().maxNumber(nums11, nums21, k11);for (int i : data11) {System.out.print(i + ",");}int n = data1.length;int incr = 0;for (int i = 0; i < n; i++) {if (data1[i] != data11[i]) {System.out.println(i + "  正确:" + data11[i]+"  当前:"+ data1[i]);if (incr++ == 3)break;}}}public static void test99ok() {int[] nums1 =arr99, nums2 = arr100;int k1 = k99;int[] data1 = new Solution().maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + ",");}System.out.println();}public static void test1() {int[] nums1 = {3, 4, 6, 5}, nums2 = {9, 1, 2, 5, 8, 3};int k1 = 5;int[] data1 = maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + " ");}System.out.println();}public static void test2() {int[] nums1 = {6, 7}, nums2 = {6, 0, 4};int k1 = 5;int[] data1 = maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + " ");}System.out.println();}public static void test3() {int[] nums1 = {3, 9}, nums2 = {8, 9};int k1 = 3;int[] data1 = maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + " ");}System.out.println();}public static void test4() {int[] nums1 = {1, 6, 5, 4, 7, 3, 9, 5, 3, 7, 8, 4, 1, 1, 4}, nums2 = {4, 3, 1, 3, 5, 9};int k1 = 21;int[] data1 = maxNumber(nums1, nums2, k1);for (int i : data1) {System.out.print(i + " ");}System.out.println();}static int[] arr99 =  {2,0,2,1,2,2,2,2,0,1,0,0,2,0,2,0,2,1,0,1,1,0,1,0,1,2,1,1,1,0,1,2,2,1,0,0,1,2,1,2,2,1,1,0,1,2,0,2,0,1,2,0,2,1,1,1,2,0,0,1,0,2,1,2,0,1,0,0,0,1,2,1,0,1,1,2,0,2,2,0,0,1,1,2,2,1,1,2,2,1,0,1,2,0,1,2,2,0,0,0,2,0,2,0,2,2,0,1,1,1,1,2,2,2,2,0,0,2,2,2,2,0,2,0,1,0,0,2,1,0,0,2,0,2,1,1,1,1,0,1,2,0,2,1,0,1,1,1,0,0,2,2,2,0,2,1,1,1,2,2,0,0,2,2,2,2,2,0,2,0,2,0,2,0,0,1,0,1,1,0,0,2,1,1,2,2,2,1,2,2,0,0,2,1,0,2,1,2,1,1,1,0,2,0,1,1,2,1,1,0,0,1,0,1,2,2,2,0,2,2,1,0,1,2,1,2,0,2,2,0,1,2,2,1,2,2,1,1,2,2,2,2,2,1,2,0,1,1,1,2,2,2,0,2,0,2,0,2,1,1,0,2,2,2,1,0,2,1,2,2,2,0,1,1,1,1,1,1,0,0,0,2,2,0,1,2,1,0,0,2,2,2,2,1,0,2,0,1,2,0},arr100={1,1,1,0,0,1,1,0,2,1,0,1,2,1,0,2,2,1,0,2,0,1,1,0,0,2,2,0,1,0,2,0,2,2,2,2,1,1,1,1,0,0,0,0,2,1,0,2,1,1,2,1,2,2,0,2,1,0,2,0,0,2,0,2,2,1,0,1,0,0,2,1,1,1,2,2,0,0,0,1,1,2,0,2,2,0,1,0,2,1,0,2,1,1,1,0,1,1,2,0,2,0,1,1,2,0,2,0,1,2,1,0,2,0,1,0,0,0,1,2,1,2,0,1,2,2,1,1,0,1,2,1,0,0,1,0,2,2,1,2,2,0,0,0,2,0,0,0,1,0,2,0,2,1,0,0,1,2,0,1,1,0,1,0,2,2,2,1,1,0,1,1,2,1,0,2,2,2,1,2,2,2,2,0,1,1,0,1,2,1,2,2,0,0,0,0,0,1,1,1,2,1,2,1,1,0,1,2,0,1,2,1,2,2,2,2,0,0,0,0,2,0,1,2,0,1,1,1,1,0,1,2,2,1,0,1,2,2,1,2,2,2,0,2,0,1,1,2,0,0,2,2,0,1,0,2,1,0,0,1,1,1,1,0,0,2,2,2,2,0,0,1,2,1,1,2,0,1,2,1,0,2,0,0,2,1,1,0,2,1,1,2,2,0,1,0,2,0,1,0};static int k99=      600;static class Solution {/*** @param nums1 an integer array of length m with digits 0-9* @param nums2 an integer array of length n with digits 0-9* @param k     an integer and k <= m + n* @return an integer array*/public int[] maxNumber(int[] nums1, int[] nums2, int k) {// Write your code hereif (k == 0)return new int[0];int m = nums1.length, n = nums2.length;if (m + n < k) return null;if (m + n == k) {int[] results = merge(nums1, nums2, k);return results;} else {int max = m >= k ? k : m;int min = n >= k ? 0 : k - n;int[] results = new int[k];for (int i = 0; i < k; ++i)results[i] = -0x7ffffff;for (int i = min; i <= max; ++i) {int[] temp = merge(getMax(nums1, i), getMax(nums2, k - i), k);results = isGreater(results, 0, temp, 0) ? results : temp;}return results;}}private int[] merge(int[] nums1, int[] nums2, int k) {int[] results = new int[k];if (k == 0) return results;int i = 0, j = 0;for (int l = 0; l < k; ++l) {results[l] = isGreater(nums1, i, nums2, j) ? nums1[i++] : nums2[j++];}return results;}private boolean isGreater(int[] nums1, int i, int[] nums2, int j) {for (; i < nums1.length && j < nums2.length; ++i, ++j) {if (nums1[i] > nums2[j])return true;if (nums1[i] < nums2[j])return false;}return i != nums1.length;}private int[] getMax(int[] nums, int k) {if (k == 0)return new int[0];int[] results = new int[k];int i = 0;for (int j = 0; j < nums.length; ++j) {while (nums.length - j + i > k && i > 0 && results[i - 1] < nums[j])i--;if (i < k)results[i++] = nums[j];}return results;}}}
/*
366 ms
时间消耗
·
21.32 MB
空间消耗
·
输入数据
[1,6,5,4,7,3,9,5,3,7,8,4,1,1,4]
[4,3,1,3,5,9]
21
输出数据
[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,1,4,1,3,5,9]
期望答案
[4,3,1,6,5,4,7,3,9,5,3,7,8,4,1,3,5,9,1,1,4]*/

相关文章:

lintcode 552 · 创建最大数 【算法 数组 贪心 hard】

题目 https://www.lintcode.com/problem/552/description 描述 给出两个长度分别是m和n的数组来表示两个大整数&#xff0c;数组的每个元素都是数字0-9。从这两个数组当中选出k个数字来创建一个最大数&#xff0c;其中k满足k < m n。选出来的数字在创建的最大数里面的位置…...

ModbusTCP服务端

1在Device下&#xff0c;添加设备net&#xff1a; 公交车。 2在net下添加 ModbusTCP...

Middleware ❀ Hadoop功能与使用详解(HDFS+YARN)

文章目录 1、服务概述1.1 HDFS1.1.1 架构解析1.1.1.1 Block 数据块1.1.1.2 NameNode 名称节点1.1.1.3 Secondary NameNode 第二名称节点1.1.1.4 DataNode 数据节点1.1.1.5 Block Caching 块缓存1.1.1.6 HDFS Federation 联邦1.1.1.7 Rack Awareness 机架感知 1.1.2 读写操作与可…...

Matlab图像处理-从RGB转换为HSV

从RGB转换为HSV HSV彩色系统基于圆柱坐标系。从RGB转换为HSV需要开发将(笛卡儿坐标系中的)RGB值映射到圆柱坐标系的公式。多数计算机图形学教材中已详细推导了这一公式&#xff0c;故此处从略。 从RGB转换为HSV的MATLAB函数是rgb2hsv&#xff0c;其语法为&#xff1a; hsv_imag…...

iOS Error Domain=PHPhotosErrorDomain Code=3300

AVCapturePhoto的数据保存到 PHPhotoLibrary的时候报错Error DomainPHPhotosErrorDomain Code3300解决代码&#xff08;也可以使用addResourceWithType:data:options:来添加数据到request&#xff0c;JEPG的实测可以&#xff0c;raw的不确定&#xff09;&#xff1a; [PHPhoto…...

LeetCode(力扣)435. 无重叠区间Python

LeetCode435. 无重叠区间 题目链接代码 题目链接 https://leetcode.cn/problems/non-overlapping-intervals/ 代码 class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:if not intervals:return 0intervals.sort(keylambda x: x[0])co…...

opencv c++实现鼠标框选区域并显示选择的图片区域

OpenCV可以使用setMouseCallback设置鼠标事件的回调函数,从而然后根据需要进行处理。 setMouseCallback原型为: void cv::setMouseCallback(const cv::String& windowName, MouseCallback onMouse, void* userData = 0); 其中,参数说明如下:windowName:窗口名称 onMo…...

Python实现自主售卖机

1 问题 在python中我们常常使用到条件判断&#xff0c;if语句时常见的条件判断语句之一。那么如何使用if语句实现根据情况自动选择商品进行售卖呢&#xff1f; 2 方法 根据if语句执行时从上往下执行的特点&#xff0c;使用if语句、dict和list来实现整个流程。 代码清单 1 drink…...

任务复杂度与人机

任务复杂度计算是指根据任务的难易程度和需要的资源投入来评估任务的复杂程度。一般来说&#xff0c;任务复杂度计算会考虑以下几个因素&#xff1a; 难度程度&#xff1a;任务的难度程度是指完成任务所需要的知识、技能和经验等的要求。较高的难度程度会增加任务的复杂度。任务…...

Windows关闭zookeeper、rocketmq日志输出以及修改rocketmq的JVM内存占用大小

JDK-1.8zookeeper-3.4.14rocketmq-3.2.6 zookeeper 进入到zookeeper的conf目录 清空配置文件&#xff0c;只保留下面这一行。zookeeper关闭日志输出相对简单。 log4j.rootLoggerOFFrocketmq 进入到rocketmq的conf目录 logback_broker.xml <?xml version"1.0&q…...

Convai:让虚拟游戏角色更智能的对话AI人工智能平台

【产品介绍】​ 名称 Convai​ 具体描述​ Convai是一款专为虚拟世界而设计的对话人工智能平台&#xff0c;它可以让你为你的游戏或应用中的角色 赋予人类般的对话能力。Convai利用了最先进的生成式对话人工智能技术&#xff0c;让你的角色可以…...

【送书活动】大模型赛道如何实现华丽的弯道超车

文章目录 导读前言AI/ML 模型训练任务对数据平台的需求01 具备对海量小文件的频繁数据访问的 I/O 效率02 提高 GPU 利用率&#xff0c;降低成本并提高投资回报率03 支持各种存储系统的原生接口04 支持单云、混合云和多云部署 核心密码01 通过数据抽象化统一数据孤岛02 通过分布…...

opencv dnn模块 示例(16) 目标检测 object_detection 之 yolov4

博客【opencv dnn模块 示例(3) 目标检测 object_detection (2) YOLO object detection】 测试了yolov3 及之前系列的模型&#xff0c;有在博客【opencv dnn模块 示例(15) opencv4.2版本dnn支持cuda加速&#xff08;vs2015异常解决&#xff09;】 说明了如何使用dnn模块进行cuda…...

Python提取JSON数据中的键值对并保存为.csv文件

本文介绍基于Python&#xff0c;读取JSON文件数据&#xff0c;并将JSON文件中指定的键值对数据转换为.csv格式文件的方法。 在之前的文章Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内&#xff08;https://blog.csdn.net/zhebushibiaoshifu/article/details/132…...

使用IDEA开发Servlet

一、新建工程 二、填写新工程的基本信息 javaee8的项目可以运行在tomcat9 三、配置tomcat 1、编辑server信息 “On frame deactivation”的意思是idea窗口发生切换时。 2、编辑部署信息 war exploded方式&#xff0c;这种方式是以文件夹方式部署的&#xff0c;支持热加载。 …...

腾讯mini项目-【指标监控服务重构】2023-07-21

今日已办 当在Docker容器中运行程序时&#xff0c;可能会遇到使用os.Getpid()函数时出现异常的情况。这是因为Docker容器中的进程隔离机制与宿主机器不同&#xff0c;容器内部的进程可能无法访问宿主机器的进程信息。 要解决这个问题&#xff0c;可以尝试&#xff1a; 使用do…...

Spring MVC里的DispatchServlet(结合Spring官网翻译)

Spring MVC里的DispatchServlet 前言1.Spring Web MVC1.1 DispatcherServlet&#xff08;中央调度器&#xff09;1.1.1 Context Hierarchy&#xff08;上下文层次结构&#xff09;1.1.2 Special Bean Types&#xff08;特定的bean类型&#xff09;1.1.3 Web MVC Config1.1.4 Se…...

数据分享|R语言武汉流动人口趋势预测:灰色模型GM(1,1)、ARIMA时间序列、logistic逻辑回归模型...

全文链接&#xff1a;http://tecdat.cn/?p32496 人口流动与迁移&#xff0c;作为人类产生以来就存在的一种社会现象&#xff0c;伴随着人类文明的不断进步从未间断&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 相关视频 人力资源是社会文明进步、人民富裕…...

解决 Axios 跨域问题,轻松实现接口调用

跨域是指访问另外一个域的资源&#xff0c;由于浏览器的同源策略&#xff0c;默认情况下使用 XMLHttpRequest 和 Fetch 请求时是不允许跨域的。跨域的根本原因是浏览器的同源策略&#xff0c;这是由浏览器对 JavaScript 施加的安全限制。 Axios 跨域常见报错 跨域请求被阻止 (…...

Layui快速入门之第十节 表单

目录 一&#xff1a;基本用法 二&#xff1a;输入框 普通输入框 输入框点缀 前置和后置 前缀和后缀 动态点缀 密码显隐 内容清除 自定义动态点缀 点缀事件 三&#xff1a;复选框 默认风格 标签风格 开关风格 复选框事件 四&#xff1a;单选框 普通单选框 自…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

测试markdown--肇兴

day1&#xff1a; 1、去程&#xff1a;7:04 --11:32高铁 高铁右转上售票大厅2楼&#xff0c;穿过候车厅下一楼&#xff0c;上大巴车 &#xffe5;10/人 **2、到达&#xff1a;**12点多到达寨子&#xff0c;买门票&#xff0c;美团/抖音&#xff1a;&#xffe5;78人 3、中饭&a…...

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

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

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

OPENCV形态学基础之二腐蚀

一.腐蚀的原理 (图1) 数学表达式&#xff1a;dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一&#xff0c;腐蚀跟膨胀属于反向操作&#xff0c;膨胀是把图像图像变大&#xff0c;而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...

上位机开发过程中的设计模式体会(1):工厂方法模式、单例模式和生成器模式

简介 在我的 QT/C 开发工作中&#xff0c;合理运用设计模式极大地提高了代码的可维护性和可扩展性。本文将分享我在实际项目中应用的三种创造型模式&#xff1a;工厂方法模式、单例模式和生成器模式。 1. 工厂模式 (Factory Pattern) 应用场景 在我的 QT 项目中曾经有一个需…...