AcWing 800. 数组元素的目标和

网址 https://www.acwing.com/solution/AcWing/content/2064/

题目描述
给定两个升序排序的有序数组A和B,以及一个目标值x,请你求出满足A[i] + B[j] = x的数对(i, j)。

数据保证有唯一解。

输入格式
第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x。

第二行包含n个整数,表示数组A。

第三行包含m个整数,表示数组B。

输出格式
共一行,包含两个整数 i 和 j。

数据范围
数组长度不超过1000000。
同一数组内元素各不相同。
1≤数组元素≤109

样例
输入样例:

4 5 6
1 2 4 7
3 4 6 8
输出样例:

1 1

(暴力枚举) O(n2)
暴力就不说了 两重循环
leetcode的第一题 也是简单 和这里的简单 意义完全不一样。
差别大概就是学生面试和竟赛圈的区别吧

但是我们可以一遍哈希法
输入A组的时候 哈希表记录数值和数值所在数组的索引
在输入B数组的时候 输入一个值 直接计算需要查找的值 也就是 X-input
如果存在这里值 打印这个值在A数组的索引 + 空格 + 当前数字的索引

 1 #include <unordered_map>
 2 #include <iostream>
 3 #include <vector>
 4 #include <set>
 5
 6 using namespace std;
 7
 8 int n,m,x;
 9 unordered_map<int,int> ma;
10 unordered_map<int,int> mb;
11
12 int main()
13 {
14     scanf("%d %d %d",&n,&m,&x);
15     int t;
16     for(int i = 0;i <n;i++){
17         scanf("%d",&t);
18         ma[t] = i;
19     }
20
21     for(int i = 0;i <m;i++){
22         scanf("%d",&t);
23         int find = x-t;
24         if(ma.count(find) != 0){
25              cout << ma[find] << " " << i << endl;
26         }
27     }
28
29
30
31     return 0;
32 }
33
34 作者:defddr
35 链接:https://www.acwing.com/solution/AcWing/content/2064/
36 来源:AcWing
37 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

原文地址:https://www.cnblogs.com/itdef/p/10886604.html

时间: 2024-08-06 19:39:48

AcWing 800. 数组元素的目标和的相关文章

acwing_800_数组元素的目标和

800. 数组元素的目标和 题目 提交记录 讨论 题解 给定两个升序排序的有序数组A和B,以及一个目标值x.数组下标从0开始.请你求出满足A[i] + B[j] = x的数对(i, j). 数据保证有唯一解. 输入格式 第一行包含三个整数n,m,x,分别表示A的长度,B的长度以及目标值x. 第二行包含n个整数,表示数组A. 第三行包含m个整数,表示数组B. 输出格式 共一行,包含两个整数 i 和 j. 数据范围 数组长度不超过100000.同一数组内元素各不相同.1≤数组元素≤1091≤数组元素

JavaScript中数组元素的线性搜索

线性搜索:将给定的数组元素一个接一个的与我们需要查找的元素进行比较. 示例:1.该示例通过prompt()函数实现用于输入需要查找的元素. 2.给定一组数组元素 3.将查询结果通过set_innerHTML()函数输出到指定页面标签内. (注:set_innerHTML()函数弥补JavaScript的innerHTML属性,JavaScript的innerHTML属性不能进行网页交互时输出.即网页交互时使用innerHTML属性JavaScript程序无响应.) <!doctype html>

PHP数组元素函数的整理

php数组元素的整理   1.Count() 计算数组中元素的个数: 2.Array_values(array $input) 以索引数组的形式返回数组中所有 元素的值 只需一个数组做参数,将关联数组转化成数字索引数组: 3.Array_keys(array$array[,mixed$search_value[,bool$strict=false]]返回数组中 部分的或所有的键名,二维数组时只显示第一层的键名 4.in_array(mixed$needle,array$haystack[,boo

Java 数组元素复制的三种方法

一.将数组元素逐个复制到目标数组中 例1 //源数组 int[] source = {10,30,20,40}; //目标数组 int[] target = new int[source.length]; for (int i = 0;i < source.length;i++){ target[i] = source[i]; } 二.使用System类的arraycopy()方法 public static void arraycopy(Object src,int srcPos,Object

1008. 数组元素循环右移问题 (20)

1008. 数组元素循环右移问题 (20) 一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 A1--AN-M-1)(最后M个数循环移至最前面的M个位置).如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式:每个输入包含一个测试用例,第1行输入N ( 1<=N<=100).M(M>=0):第2行输入N个整数,之间用空格

js删除数组元素中的指定值

js删除数组元素中的指定值:所谓删除数组元素中指定的值,就是删除具有指定的数组项,下面就通过实例代码代码介绍一下如何实现此功能.代码如下: var theArray=["蚂蚁部落",2,"青岛市南区","antzone","蚂蚁部落"]; for(var i=0;i<theArray.length;i++){ if(theArray[i]=="蚂蚁部落"){ theArray.splice(i,1);

用指针引用数组元素并打印输出

<span style="font-size:18px;">#include<stdio.h> void main() { int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//数组指针变量声明 int row,col; p=a;//指针p指向数组元素为4的数组 //打印输出数组指针p指向的数组的值 for(row=0;row<3;row++) { for(col=0;col<4;

php统计数组元素个数

count():对数组中的元素个数进行统计; sizeof():和count()具有同样的用途,这两个函数都可以返回数组元素个数.可以得到一个常规标量变量中的元素个数,如果传递给这个函数的数组是一个空数组,或者是一个没有经过设定的变量,返回的数组元素个数就是0; array_count_value():统计每个特定的值在数组$array中出现过的次数; 如: $array=array(4,5,1,2,3,1,2,1); $ac=array_count_value($array); 将创建一个名为

js删除数组元素、清空数组的简单方法

一.清空数组 var ary = [1,2,3,4]; ary.splice(0,ary.length);//清空数组 console.log(ary); // 输出 [],空数组,即被清空了 二.删除数组元素 var ary = [1,2,3,4]; ary.splice(0,1); 或 ary.splice($.inArray(2, ary), 1); 其中$.inArray(2, ary)用来查找某元素在数组中的索引位置.