【学习笔记】C++每日一记[20240612]

给定两个有序的数组,计算两者的交集

给定两个有序整型数组,数组中 的元素是递增的,且各数组中没有重复元素。

第一时间解法:通过一个循环扫描array_1中的每一个元素,然后利用该元素去比较array_2中的每一个元素,如果array_1中的元素在array_2中出现,则将其加入交集。但是算法时间复杂度较高,需要二重循环来实现,其时间复杂度为 O ( n 2 ) O(n^2) O(n2)。没有利用“数组元素递增且没有重复元素”的条件。

常规和经典的解答:数组的二路并归法。
用变量i指向array_1的第一个元素,变量j指向array_2的第一个元素,然后执行下面的操作:
(1)如果array_1[i]等于array_2[j],则该元素是交集元素,将其放到insection数组中,然后执行i++,j++,继续 (1)、(2)、(3)的比较。
(2)如果array_1[i]大于array_2[j],则执行j++,然后重复(1)、(2)、(3)的比较。
(3)如果array_1[1]小于array_2[j],则执行i++,然后重复(1)、(2)、(3)的比较。
(4)一旦i等于数组array_1的长度,或者j等于数组array_2的长度,循环终止。最终数组intersection中的元素即为array_1和array_2的交集元素。


#include <iostream>
using namespace std;int getInter(int array_1[], int len_1, int array_2[], int len_2, int intersection[])
{int i = 0;int j = 0;int k = 0;int len = 0;while (i < len_1 && j < len_2){if (array_1[i] == array_2[j]){intersection[k] = array_1[i];i++;j++;k++;}if (array_1[i] > array_2[j]){j++;}if (array_1[i] < array_2[j]){i++;}}len = k;cout << "数据交集为:" << endl;for (int h = 0; h < len; h++){cout << intersection[h] << " ";}cout << "" << endl;return len;
}int main() 
{int array_1[5] = {2,5,6,8,9};int array_2[5] = {1,5,6,7,8};int len_1 = sizeof(array_1) / sizeof(array_1[0]);int len_2 = sizeof(array_2) / sizeof(array_2[0]);int intersection_len;int intersection[5];intersection_len = getInter(array_1, len_1, array_2, len_2, intersection);cout << "数据交集数量为:" << endl;cout << intersection_len << endl;cout << "done" << endl;return  0;
}

运行结果:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/26391.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

采用沙普利值(Shapley value)实现了数据供给方报酬分配的公平性.

目录 采用沙普利值(Shapley value)实现了数据供给方报酬分配的公平性. 采用沙普利值(Shapley value)实现了数据供给方报酬分配的公平性. 采用沙普利值(Shapley value)实现数据供给方报酬分配的公平性,在交易模型中考虑参与个体的异质性与隐私保护,主要体现在以下几个方面…

LeetCode-day11-2813. 子序列最大优雅度

LeetCode-day11-2813. 子序列最大优雅度 题目描述示例示例1&#xff1a;示例2&#xff1a;示例3&#xff1a; 思路代码 题目描述 给你一个长度为 n 的二维整数数组 items 和一个整数 k 。 items[i] [profiti, categoryi]&#xff0c;其中 profiti 和 categoryi 分别表示第 i…

<Python><opencv><TesseractOCR>基于python和opencv,使用ocr识别图片中的文本并进行替换

前言 本文是在python中,利用opencv处理图片,利用tesseractOCR来识别图片中的文本并进行替换的一种实现方法。 环境配置 系统:windows 平台:visual studio code 语言:python 库:pyqt5、opencv、tesseractOCR 代码介绍 本文程序功能实现,主要依赖于tesseractOCR这个库,…

遥控器无法点击AOSP Settings 的管理存储按钮 MANAGE STORAGE

前言 这里是遇到了MANAGE STORAGE的按钮使用遥控器移动的时候无法聚焦到这个按钮&#xff0c;自然也就无法点击。它只能聚焦到这一整个整体&#xff0c;因此我就设置当点击到这一整个整体时&#xff0c;就相应MANAGE STORAGE按钮的点击事件。 图片 代码 packages/apps/Setti…

探索在线问诊系统的安全性与隐私保护

随着远程医疗的普及&#xff0c;在线问诊系统成为医疗服务的重要组成部分。然而&#xff0c;随着医疗数据的在线传输和存储&#xff0c;患者的隐私保护和数据安全面临巨大挑战。本文将探讨在线问诊系统的安全性与隐私保护&#xff0c;介绍常见的安全措施和技术实现&#xff0c;…

图片转Excel表格:提升数据处理效率的利器

在日常工作和生活中&#xff0c;我们经常遇到各种数据和信息以图片的形式存在。有时&#xff0c;这些数据图片中包含了重要的表格信息&#xff0c;例如财务报告、统计数据或调研结果。为了对这些数据进行进一步的分析和处理&#xff0c;我们需要将其转换为可编辑的电子表格格式…

利用python进行批量TIF转NC并进行像元尺度的MK检验

批量TIF转NC并进行MK检验 这里主要记录一个批量进行tif文件转nc,并且将长序列数据进行mk检验的python代码。有问题随时联系:jia5678912。 import os import numpy as np import xarray as xr from osgeo import gdal, osrdef Search_File(dirname,suffix):This function ca…

node 版本控制

官网下载 nvm 包 查看node和npm版本&#xff1a;https://github.com/coreybutler/nvm-windows/releases 2、查看nvm是否安装成功 nvm3、基本使用 1、查看当前node可用版本 nvm ls2、查看当前使用的node版本 nvm current3、安装指定node版本 nvm install 19.9.04、切换版…

基于springboot的人力资源管理系统源码数据库

传统信息的管理大部分依赖于管理人员的手工登记与管理&#xff0c;然而&#xff0c;随着近些年信息技术的迅猛发展&#xff0c;让许多比较老套的信息管理模式进行了更新迭代&#xff0c;员工信息因为其管理内容繁杂&#xff0c;管理数量繁多导致手工进行处理不能满足广大用户的…

构建 deno/fresh 的 docker 镜像

众所周知, 最近 docker 镜像的使用又出现了新的困难. 但是不怕, 窝们可以使用曲线救国的方法: 自己制作容器镜像 ! 下面以 deno/fresh 举栗, 部署一个简单的应用. 目录 1 创建 deno/fresh 项目2 构建 docker 镜像3 部署和测试4 总结与展望 1 创建 deno/fresh 项目 执行命令…

LeetCode 算法: 旋转图像c++

原题链接&#x1f517;&#xff1a; 旋转图像 难度&#xff1a;中等⭐️⭐️ 题目 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图…

5.冒泡+选择+插入+希尔

一、排序算法 排序基础 1.排序算法的稳定性 2.何为原地排序算法 1.冒泡排序 从下面第一个元素开始往上冒泡&#xff0c;一轮冒泡下来&#xff0c;最大的元素就去了最上面了 步骤&#xff1a;无序数组 每次冒泡都可以将最大的元素放到最右边去 第一轮比较了5次&#xff1a;…

SHELL脚本学习(七) 脚本控制(2)

一、调整谦让度 在多任务操作系统中&#xff0c;内核负责为每个进程分配时间。 调度优先级 (也称为 谦让度 )是指内核为进程分配的CPU时间(相对于其他进程)。在linux系统中由shell启动的进程默认优先级是相同的。  调度优先级是一个整数值&#xff0c;取值范围从-20(最高优先级…

开箱机特点与操作因素:深入剖析影响效率的关键因素

在现代化物流和生产流程中&#xff0c;开箱机作为一种自动化、高效率的设备&#xff0c;正逐渐成为企业提升工作效率、降低人工成本的得力助手。然而&#xff0c;要想充分发挥开箱机的性能优势&#xff0c;就必须深入了解其特点与操作因素&#xff0c;并准确把握影响效率的关键…

Navicat for MySQL 11软件下载附加详细安装教程

根据使用者情况表明Navicat Premium 能使你快速地在各种数据库系统间传输数据&#xff0c;或传输到一份指定 SQL 格式和编码的纯文本文件&#xff0c;计划不同数据库的批处理作业并在指定的时间运行&#xff0c;其他功能包括导入向导、导出向导、查询创建工具、报表创建工具、数…

贝尔编程是干什么的:深入探索其核心理念与应用领域

贝尔编程是干什么的&#xff1a;深入探索其核心理念与应用领域 贝尔编程&#xff0c;这一术语在科技领域里逐渐崭露头角&#xff0c;引起了广泛的关注。但究竟贝尔编程是干什么的呢&#xff1f;本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;深入剖析贝尔编程的…

安卓编程用什么软件:深入探索与全面解析

安卓编程用什么软件&#xff1a;深入探索与全面解析 在安卓编程的广阔天地中&#xff0c;选择合适的软件工具对于提升编程效率与体验至关重要。本文将从四个方面、五个方面、六个方面和七个方面&#xff0c;为您深入探索与全面解析安卓编程所需的软件工具&#xff0c;带您领略…

Idea | Idea提交.properties文件乱码问题

这里 Transparent natice-to-ascii conversion 自动转换ASCII码 千万别勾选

第 5 章:面向生产的 Spring Boot

在 4.1.2 节中&#xff0c;我们介绍了 Spring Boot 的四大核心组成部分&#xff0c;第 4 章主要介绍了其中的起步依赖与自动配置&#xff0c;本章将重点介绍 Spring Boot Actuator&#xff0c;包括如何通过 Actuator 提供的各种端点&#xff08;endpoint&#xff09;了解系统的…

优雅迷人的小程序 UI 风格

优雅迷人的小程序 UI 风格