力扣每日一题:2956. 找到两个数组中的公共元素

文章目录

  • ***今日份每日一题:***
    • 题目要求:
    • 示例如下:
      • 示例1
      • 示例2
      • 示例3
    • 解释
      • 剖析示例
        • 示例1
        • 示例2
        • 示例3
      • 将逻辑思路转换为代码

力扣官网:前往作答!!!!

今日份每日一题:

题目要求:

给你两个下标从 0 开始的整数数组 nums1 和 nums2 ,它们分别含有 n 和 m 个元素。请你计算以下两个数值:

  • answer1:使得 nums1[i] 在 nums2 中出现的下标 i 的数量。
  • answer2:使得 nums2[i] 在 nums1 中出现的下标 i 的数量。
  • 返回 [answer1, answer2]。

示例如下:

示例1

输入:nums1 = [2,3,2], nums2 = [1,2]

输出:[2,1]

示例2

输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]

输出:[3,4]

解释:

  • nums1 中下标在 1,2,3 的元素在 nums2 中也存在。所以 answer1 为 3。

  • nums2 中下标在 0,1,3,4 的元素在 nums1 中也存在。所以 answer2 为 4。

示例3

输入:nums1 = [3,4,2,3], nums2 = [1,5]

输出:[0,0]

解释:

nums1 和 nums2 中没有相同的数字,所以答案是 [0,0]。

解释

剖析示例

  • 这道题目其实还是蛮简单的,就是题目看起来有些生涩难懂
  • 其实看一眼案例就懂了
  • 暴力秒了
示例1

输入:nums1 = [2,3,2], nums2 = [1,2]

输出:[2,1]

  • 我们需要把两个数组分开来看
  • 一个当作输入集,一个当作比较集
  • 当我们把nums1当作输入集,nums2当作比较集
  • 查看nums1中有哪几个元素是nums2中有的
  • 结果就是下标为0的2,下标为2的2,也就是两个元素,所以answer1是2

  • 当我们把nums2当作输入集,nums1当作比较集

  • 查看nums2中有哪几个元素是nums1中也有的

  • 结果就是下标为1的2是nums1中也有的,也就是一个元素,所以answer2是1

  • 最后的结果就是【2,1】

示例2

输入:nums1 = [4,3,2,3,1], nums2 = [2,2,5,2,3,6]

输出:[3,4]

  • 我们再来看第二个示例
  • 当我们把nums1当作输入集,nums2当作比较集
  • 查看nums1中有哪几个元素是nums2中有的
  • 结果就是下标为1的3,下标为2的2,下标为3的3,也就是三个元素,所以answer1是3

  • 当我们把nums2当作输入集,nums1当作比较集

  • 查看nums2中有哪几个元素是nums1中有的

  • 结果就是下标为0的2,下标为1的2,下标为3的2,下标为4的3,也就是4个元素,所以answer2是4

  • 所以最后答案是【3,4】

示例3

输入:nums1 = [3,4,2,3], nums2 = [1,5]

输出:[0,0]

  • 我们最后来看第三个示例
  • 当我们把nums1当作输入集,nums2当作比较集
  • 查看nums1中有哪几个元素是nums2中有的
  • 结果发现一个都没有,所以answer1为0

  • 当我们把nums2当作输入集,nums1当作比较集
  • 查看nums2中有哪几个元素是nums1中有的
  • 结果发现同样一个也没有,所以answer2也为0
  • 所以最后答案是【0,0】

将逻辑思路转换为代码

逻辑思路:

  • 我们需要将nums1和nums2分别当一次输入集和比较集
  • 查看输入集中有几个元素在比较集中也有
  • 将相同的元素累加起来
  • 最后输出

代码:

  • 利用两次双重循环比例来完成nums1和nums2分别当输入集和比较集
  • 通过if判断来查看是否有相同值元素,有就计数器+1,并及时break退出循环;如果没有,继续遍历

需要注意的是两次循环遍历的外层和内层分别是什么,输入集是外层还是比较集是外层
应该是输入集在外层循环,比较集为内层循环
输入集的每一个元素都要和比较集的每一个元素比较,所以是输入集在外层,比较集在内层
注意区分:比较集的每一个元素都要和输入集的每一个元素比较输入集的每一个元素都要和比较集的每一个元素比较的不同

    vector<int> findIntersectionValues(vector<int>& nums1, vector<int>& nums2) {int ans1 = 0, ans2 = 0;						//初始化两个计数器,分别用来记录两次计数结果for(int i=0;i<nums1.size();i++){			//当nums1为输入集,nums2为比较集for(int j = 0;j<nums2.size();j++){		//输入集为外层循环,比较集为内层循环if(nums1[i] == nums2[j]){			//比较两个元素的值是否相等ans1++;							//相等的话就计数器+1break;							//检查到相等及时推出内层循环,开始外层下一个元素循环}}}for(int i = 0; i<nums2.size();i++){			//当nums2为输入集,nums1为比较集for(int j = 0;j<nums1.size();j++){		//输入集为外层循环,比较集为内层循环if(nums2[i] == nums1[j]){			//比较两个元素的值是否相等ans2++;							//相等的话就计数器+1break;							//检查到相等及时推出内层循环,开始外层下一个元素循环}}}vector<int> back = {ans1,ans2};				//初始化返回值,因为返回值是vector类型的,所以我们需要将answer1和answer2放进去return back;								//返回值}

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

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

相关文章

XBOX360-玩体感游戏时提示:您必须进行系统更新,才能使用Kinect

XBOX360-玩体感游戏时提示:您必须进行系统更新,才能使用Kinect 背景更换硬盘准备的软件XBOX换盘和拷贝游戏设置XBOX启动就进入Aurora如何何止Aurora的游戏目录扫描路径解决您必须进行系统更新,才能使用Kinect问题参考链接背景 实际上我的XBOX需要解决两个问题: 自制系统升…

HTTP缓存/强缓存/协商缓存

HTTP缓存是HTTP性能优化中一种简单高效的优化方式&#xff0c;通过保存资源副本并在下次请求时直接使用该副本&#xff0c;以减少对服务器的请求次数和数据传输量&#xff0c;从而提高网页加载速度和用户体验。以下是HTTP缓存的详细解释&#xff1a; 一、定义与工作原理 HTTP…

VMware安装CentOS 7

在虚拟机中安装无论是Windows还是Linux其实都差不多&#xff0c;主要还是需要熟悉VMware的使用&#xff0c;多新增几次就熟悉了&#xff0c;可以反复删除再新增去练习… 如下是安装CentOS 7 安装过程&#xff1a; VMare Workstation 16 PRO 中安装CentOS 7 CentOS 7 下载推荐…

Meta Llama - Model Cards Prompt formats

本文翻译整理自&#xff1a; https://llama.meta.com/docs/model-cards-and-prompt-formats/meta-llama-3/ 文章目录 一、Meta Llama 3与Meta Llama 3一起使用的特殊tokenMeta Llama 3Meta Llama 3 Instruct 二、Meta Llama Guard 2提示格式 三、Meta Code LlamaMeta Code Llam…

Java 中的NIO、BIO和AIO详细总结

Java IO 与 BIO、NIO IO&#xff0c;常写作 I/O&#xff0c;是 Input/Output 的简称&#xff0c;即输入/输出。通常指数据在内部存储器&#xff08;内存&#xff09;和外部存储器&#xff08;硬盘、优盘等&#xff09;或其他周边设备之间的输入和输出。 输入/输出是信息处理系统…

数据结构之栈的实现与排序详解与示例(C, C#, C++)

文章目录 栈的基本操作栈的排序总结 栈是一种后进先出&#xff08;Last In First Out, LIFO&#xff09;的数据结构。在栈中&#xff0c;元素的插入和删除操作都发生在同一端&#xff0c;即栈顶。本文将详细介绍如何实现栈的排序&#xff0c;并提供C, C#, C三种语言的示例。 栈…

【46 Pandas+Pyecharts | 当当网畅销图书榜单数据分析可视化】

文章目录 &#x1f3f3;️‍&#x1f308; 1. 导入模块&#x1f3f3;️‍&#x1f308; 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 去除重复数据2.4 书名处理2.5 提取年份 &#x1f3f3;️‍&#x1f308; 3. Pyecharts数据可视化3.1 作者图书数量分布3.2 图书出版年份…

JVM--垃圾收集算法

1.分代收集理论 垃圾收集算法可以划分为“引用计数式垃圾收集”&#xff08;ReferenceCounting GC&#xff09;和“追踪式垃圾收集”&#xff08;Tracing GC&#xff09;两大类&#xff0c;本次仅仅讨论踪式垃圾收集 谈到垃圾收集 &#xff0c;首先先了解分代的收集理论&#x…

Nuxt.js头部魔法:轻松自定义页面元信息,提升用户体验

title: Nuxt.js头部魔法&#xff1a;轻松自定义页面元信息&#xff0c;提升用户体验 date: 2024/7/16 updated: 2024/7/16 author: cmdragon excerpt: 摘要&#xff1a;“Nuxt.js头部魔法&#xff1a;轻松自定义页面元信息&#xff0c;提升用户体验”介绍如何使用useHead函数…

智能合约中授权与转账的分离可行性分析

概览 本文档旨在探讨智能合约中授权与转账操作为何通常被设计为分离的步骤&#xff0c;以及在授权与转账之后&#xff0c;是否能够立即进行连续的代币转移。我们将从安全性、效率、灵活性和操作流程的角度分析这些问题。 授权与转账操作的分离 目标与原因 安全性增强&#…

mybatis的xml中,where标签不自动删除多余的and之类的问题

遇到了这个莫名其妙的问题&#xff0c;起初是很疑惑的&#xff0c;where标签好像失灵了一般不会自动删除掉 多余的and 看了眼sql语句&#xff0c;发现还是有and没被删除。 后来重新写了遍后发现又没事了。真的是神人。 然后就研究了好一会&#xff0c;发现&#xff01;&#…

什么是Go中的泛型与接口,它们都有哪些优缺点?

Golang 中的泛型与空接口 泛型简介 泛型允许在编写能够处理任意类型的代码&#xff0c;而无需在每次使用不同类型时都重新编写代码。泛型的核心是类型参数&#xff0c;这些参数在函数、结构体或接口中定义&#xff0c;并在使用时进行具体化。 泛型函数 使用泛型函数时&…

Uniapp中image的@load不触发问题

load 事件不触发的常见情况有以下几种: 图片缓存命中 当图片从浏览器缓存中加载时,load 事件通常不会被触发。这是因为浏览器认为这个图片已经成功加载过了,所以不会再次触发 load 事件。 图片地址未发生变化 如果 image 组件的 src 属性值没有发生变化,即使图片是从网络上加载…

C++——关于new和delete

在C语言中我们想要动态管理内存空间&#xff0c;需要使用到malloc/calloc/realloc/free这些函数&#xff0c;在 C中有新的管理方式&#xff0c;那就是new和delete。new和delete是C新定义的操作符&#xff0c;专门用于管理堆上的内存空间。 new和delete在编译时&#xff0c;编译…

Linux C++ 055-设计模式之状态模式

Linux C 055-设计模式之状态模式 本节关键字&#xff1a;Linux、C、设计模式、状态模式 相关库函数&#xff1a; 概念 状态模式&#xff08;State Pattern&#xff09;是设计模式的一种&#xff0c;属于行为模式。允许一个对象在其内部状态改变时改变它的行为。对象看起来似…

Rust RefCell<T> 和内部可变性模式

内部可变性&#xff08;Interior mutability&#xff09;是 Rust 中的一个设计模式&#xff0c;它允许你即使在有不可变引用时也可以改变数据&#xff0c;这通常是借用规则所不允许的。为了改变数据&#xff0c;该模式在数据结构中使用 unsafe 代码来模糊 Rust 通常的可变性和借…

移动UI:具备什么特征,可以被认定为科技风格。

移动UI设计在科技风格上通常具备以下特征&#xff1a; 1. 清晰简洁的排版&#xff1a; 科技风格的移动UI通常采用清晰简洁的排版&#xff0c;注重信息的层次感和结构化&#xff0c;以便用户能够快速、直观地获取所需信息。 2. 几何形状和线条&#xff1a; 科技风格的移动UI常…

【算法】代码随想录之哈希表(更新中)

文章目录 前言 一、有效的字母异位词&#xff08;LeetCode--242&#xff09; 二、两个数组的交集&#xff08;LeetCode--349&#xff09; 前言 跟随代码随想录&#xff0c;学习哈希表相关的算法题目&#xff0c;记录学习过程中的tips。 一、有效的字母异位词&#xff08;Le…

HashMap的扩容原理

1.7版本 1.先生成新数组 2.遍历老数组中的每个位置上的链表上的每个元素 3.取每个元素的key&#xff0c;并基于新数组长度&#xff0c;计算出每个元素在新数组中的下标 4.将元素添加到新数组中去 5.所有元素转移完了之后&#xff0c;将新数组赋值给HashMap对象的table属性 1.8版…

conda 复现论文部署环境常用操作

conda创建环境 conda create -n baichuan python3.9#不要创建环境&#xff0c;新创建的环境都没有关联cuda。可以复制原本就有cuda的环境 conda create -n 新环境名 --clone 旧环境名conda删除、查看环境 conda env list conda remove -n baichuan --all 停用环境 conda dea…