顺序表ADT模板简单应用算法设计:在给定的有序顺序表中找出两个元素和为给定值的所有元素对

问题描述

目的:使用STL的vector模板设计并实现顺序表应用场合的一些简单算法设计。

应用7:试设计一个算法,找出有序顺序表A(顺序表A中的数据元素的数据类型为int型)中两个元素和为给定值sum的所有元素对,并保持原有序表不变。

参考函数原型:

template<class ElemType>

void Search_Pairs( vector<ElemType> &A, int sum );

输入说明

第一行:有序顺序表A的长度

第二行:有序顺序表A的数据元素(数据元素之间以空格分隔)

第三行:给定值sum

输出说明

第一行:顺序表A的遍历结果

第二行开始:符合条件的元素对(每一对占一行,数据元素之间以","分割)

          如无符合条件的元素对,输出"NULL"

输入范例

6
1 3 5 7 9 15
10

输出范例

1 3 5 7 9 15 
1,9
3,7

思路分析

  • 比起双重遍历的暴力求解,可以参考一下如下的two points方法

https://blog.csdn.net/Blackoutdragon/article/details/105742492

错误提取

在这里插入图片描述

  • 分析:
    • 如果是给的序列不一定是升序,是降序,那判定条件不就反了?
    • 如果有重复的元素,不会重复输出吗?
  • 对策:
    • 首先针对重复元素,移动元素之前先判定一下,防止下一个元素是重复的。
      在这里插入图片描述

在这里插入图片描述

  • 通过了,好吧,确实只是重复的元素,OJ的样例太少了,比leetcode的难度低多了

分析与总结

  • leetcode还是要刷起来的,oj的题目是要习惯了这种模式,还是很简单的

猜你喜欢

转载自blog.csdn.net/Blackoutdragon/article/details/108950677
今日推荐