1048 Find Coins(two pointers解法)
1. 很典型的双指针的应用,将数组按照非降排列,两个指针从一头一尾开始包抄,若等于(等于要放在第一个)则返回结果结束程序,小于则左指针右移,大于则右指针左移。
2. 起初还担心,如果得到的结果不是那个较小数最小的怎么办,其实多虑,从两边逼近,得到的一定是这个结果。
3. 比起用散列解决这道题,双指针不用额外考虑两个数相等的情况,因为在序列中相等的两个数指针不一样,不用担心1个数当成两个用。
AC代码
#include<cstdio>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<bits/stdc++.h>
#include<stdlib.h>
#include<time.h>using namespace std;
typedef long long LL;const int maxn = 100000;
const int INF = 1000000000;//INF:下确界
const LL SUP = (1LL<<63)-1;//SUP:上确界
const double eps = 1e-5;int main(){int n,m;int A[maxn];scanf("%d%d",&n,&m);for(int i=0;i<n;i++){scanf("%d",&A[i]);}sort(A,A+n);int i=0,j=n-1;while(i<j){if(A[i]+A[j]==m){printf("%d %d",A[i],A[j]);return 0;}else if(A[i]+A[j]<m)i++;else if(A[i]+A[j]>m)j--;}printf("No Solution"); return 0;
}
1048 Find Coins(two pointers解法)相关推荐
- 1048 Find Coins(散列解法)
1. 开始测试点3答案错误,看参考书发现是,读题时根据硬币最大面值500设置的数组大小,但是后来会用总面值减去硬币面值,这个大小在[1,999),因此散列表的大小应该设为1010. 2. 学会了一个小 ...
- PAT甲级1048 Find Coins :[C++题解]哈希表、两个硬币之和为定值
文章目录 题目分析 题目链接 题目分析 来源:acwing 题意:找两个数,和为定值. 分析:本题在各大OJ上几乎都有, 反正在Leetcode上做过.本题有两种常见的解法,一种是双指针,另一种是用哈 ...
- 【最简解法】1048 Find Coins (25 分)_18行代码AC
立志用最少的代码做最高效的表达 PAT甲级最优题解-->传送门 Eva loves to collect coins from all over the universe, including ...
- 1048 Find Coins(二分法解法)
非常基础的二分法-寻找序列中是否存在某一条件的元素 的应用 AC代码 #include<cstdio> #include<iostream> #include<set&g ...
- 【PAT甲级】1048 Find Coins (25 分) C++ 全部AC
题目 给你一个sum,以及拥有的钱 让你找出一个组合,正好用两张钱付清sum,注意如果有多个结果,输出其中最小的 这道题注意稍微优化一下算法,要不然卡在测试点3,4 我是用二重循环过了的,只要注意输入 ...
- 1030 完美数列(two pointers解法)
1. 这道题出现在二分法,但是特殊之处在于,双指针是嵌套的,程序看上去有些像暴力枚举,但其实是利用了,如果i<j,a[i]*p>=a[j],那么一定有k在[i,j]范围内,a[i]*p&g ...
- 1048 Find Coins
水题,详见代码- #include <iostream> #include <string.h> #include <cstdio> #include <al ...
- PAT题型分类 记录汇总
这篇博客记录了我在跟着<算法笔记>以及习题册<算法笔记 上机实践指南>刷了PAT的题目之后的一些解题方法的总结与心得. 第三章 入门模拟 1. 简单模拟 一般解题思路 这一小节 ...
- PAT甲级训练合集(1-70)
本章题解跳转 考点 P1001 数字的数组表示和处理 P1002 多项式的数组表示和处理 P1003 深度优先搜素 P1004 深度优先搜素 P1005 哈希表 P1006 P1007 数组子区间求和 ...
最新文章
- 心得丨对于机器学习,到底该选择哪种编程语言
- 获得两点之间连续坐标,向量加法、减法、乘法的运用
- 毕业论文图像快速画出
- 2015年01月30日 - Git五分钟教程
- 使用nsenter进入Docker容器
- 大学的最后一年有一门课程叫“人生”。
- BigDecimal 使用浅析
- 生成透明带水印的图片
- 讲解HTML和CSS(超详细)
- NOIP模拟题——复制粘贴2
- SeNet || 注意力机制——源代码+注释
- ITE之GUI设计----过场动画
- android KE or NE分析
- 使用微信jssdk接口调用语音,图片,分享等功能
- SparkSQL知识点总结
- android智能家居wifi原理图,WiFi模块为你讲解WiFi插座原理
- Kinect+OpenNI学习笔记之8(Robert-Walter手部提取代码的分析)
- 一篇震惊西方世界的中国人的论文!
- 智能综合布线管理软件实现机房配线可视化管理
- 华南师范大学计算机学院重修,华南师范大学计算机学院、软件学院本科生学年评优工作条例...
热门文章
- iOS Named colors do not work prior to iOS 11.0问题解决
- centos7下Gitlab+Jenkins部署持续集成CI环境
- 路由器配置实践 教你如何在Linux中三台主机两个网段互相通信
- 东方日升重磅推出白色双玻组件 助力推动度电成本下滑
- 高德API+Python解决租房问题
- Robot Framework(十八) 支持工具
- C#(WPF)去除事件中注册的事件处理方法!
- Linux-find命令应用举例-按时间筛选和删除文件
- 201621123057 《Java程序设计》第12周学习总结
- SQL2K数据库开发二之查看和修改Sample数据库