首页 > 其他分享 >20240326每日一题题解

20240326每日一题题解

时间:2024-03-26 18:15:10浏览次数:23  
标签:target int 题解 每日 cin mp 数组 20240326

20240326每日一题题解

Problem

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • 只会存在一个有效答案

进阶:你可以想出一个时间复杂度小于 O(n2) 的算法吗?

Solution

题外话:这道题的输入输出格式对于C++极其不友好。所以为了编写C++的程序,略微将输入输出方式稍加改变,变成输入三行,第一行输入n,第二行输入num数组,用空格分隔,第三行输入一个数target

读入所有的数据之后,我们使用两个变量进行枚举:

我们枚举\(i\in[0,n-1],j\in[i+1,n-1]\),然后判断选择数对\((i,j)\)​时的两数a[i]+a[j]是否与target相等。

Code

#include<iostream>
using namespace std;

int n;
int num[100010];
int target;
int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>num[i];
	}
	cin>>target;
	
	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			if(num[i]+num[j]==target)
			{
				cout<<i<<" "<<j<<endl;
			}
		}
	}
	
	return 0;
}

进阶

可以排序+二分,也可以用map

下面使用STL容器中的map来实现在\(O(n\log n)\)的时间复杂度内完成这个任务。

#include<iostream>
#include<map>
using namespace std;

int n;
map<int,int>mp;
int target;
int main()
{
	cin>>n;
	for(int i=0,t;i<n;i++)
	{
		cin>>t;
		mp[t]=i;
	}
	cin>>target;
	
	for(auto it=mp.begin();it!=mp.end();it++)
	{
		if(mp.find(target-it->first)!=mp.end())
		{
			cout<<it->second<<" "<<mp.find(target-it->first)->second<<endl;
			return 0;
		}
	}
	
	
	
	return 0;
}

标签:target,int,题解,每日,cin,mp,数组,20240326
From: https://www.cnblogs.com/Vanilla-chan/p/18097239

相关文章

  • 每日一练:LeeCode-234、回文链表【链表+栈+快慢双指针】
    给你一个单链表的头节点head,请你判断该链表是否为回文链表。如果是,返回true;否则,返回false。示例1:输入:head=[1,2,2,1]输出:true示例2:输入:head=[1,2]输出:false提示:链表中节点数目在范围[1,10^5]内0<=Node.val<=9进阶:你能否用O(n)时间复杂度......
  • 问题解答:ABAP 关键字 ANY TABLE 的使用场合深入剖析
    本教程下面这篇讲述ABAP动态编程的文章,有朋友提问:127.答网友疑问:ABAPFunctionModule如何支持内表结构不确定的动态输入参数汪老师,我这边定义了一个ANYTABLE,但是报错,说是没有这个类型,我在SE38定义的时候也报错,只有用FIELD-symbols定义才不会报错,所以就很好奇为什......
  • ccf-csp-2020-12-2期末预测之最佳阈值(c++满分题解)
    这个题暴力是可以有70分的,下面是暴力代码:(注释写的比较清楚了,也很好理解)#include<iostream>#include<vector>#include<set>#include<algorithm>usingnamespacestd;boolsort1(pair<int,int>vec1,pair<int,int>vec2)//对阈值从小到大排序{ returnvec1.first<=ve......
  • [题解] BZOJ4203 同桌的你
    题意给出\(n\)个人的性别\(b_i\)、喜欢的人\(a_i\)(有且仅有一个)。现在两人分一组,若一组中存在一人喜欢另一人,则称这一组为「满意」的。要求在最大化「满意」组数的前提下最大化男女同桌组数,并构造分组方案。思路考虑建图,从\(i\)到\(a_i\)连一条有向边,转化为基环树上......
  • 每日刷题 例题训练 两数相加
    一.题目给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例:输入:nums=[3,2,4],......
  • AGC018C Coins 题解
    模拟费用流。传送门题意:共\(n=x+y+z\)个人,每个人可以选择获得\(a_i\)个金币或\(b_i\)个银币或\(c_i\)个铜币。要选\(x\)个人拿金币,\(y\)个人拿银币,\(z\)个人拿铜币。问币数总和最大是多少。\(n\le10^5\)。先建出费用流模型:把一个人的选择视作一个人流到了金币/......
  • 3.25每日总结
    给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。代码packageorg.example;importjava.util.Scanner;publicclassShuzu......
  • Atcoder ABC 346 全题解
    闲话上一篇全题解反向不错,如果大家支持我就会继续更。我ABC也打了,ARC也打了,没打好,疯狂掉大分……包括本场比赛也是整整补了EFG三道题,以及ARC死磕D结果使赛后五分钟AC又有素材了……A懒得讲B由于我被B题坑了,所以在此纪念。最简单的方法就是把字符串复制......
  • 【每日算法】理论:AIGC模型 刷题:力扣链表操作
    上期文章【每日算法】理论:图像分割相关刷题:设计链表文章目录上期文章一、上期问题二、理论问题1、LAMAInpaint2、IPadapter模型3、Anydoor4、vit(VisionTransformer)架构5、MAE6、CLIP模型三、力扣刷题回顾-链表操作203.移除链表元素206.反转链表24.两两交换链表......
  • 每日面经分享(测试开发经典场景题目)
    1.面试测试场景题目,回答的测试点有哪些?a.功能测试点:确保所测试的功能按照设计要求正常工作。例如,对于电影票预订网站的座位选择功能,测试点可能包括选择连续座位、选择非连续座位、座位已售等情况。b.边界测试点:测试输入值的边界情况,以验证系统在极限条件下的表现。例如......