在一个数组中是否存在两个数A、B的和为M

#include <iostream>
#include <algorithm>
//#include <vector>
using namespace std;

int main () {
int myints[] = {32,71,12,45,26,67,53,68};
int l=sizeof(myints)/sizeof(myints[0]);//数组长度
int N=100;
sort (myints, myints+l);
int myints2 [8];
for(int i=0;i<l;i++)
{
// cout<<myints[i]<<" ";
myints2[i]=N-myints[i];
// cout<<myints2[i]<<" ";
}
int start1=0,start2=l-1;//从数组1的第一个元素和数组2的最后一个元素开始比较
while((start1!=(l-1))||(start2!=0))//循环到数组1的最后一个元素或者数组2的第一个元素
{
if(myints[start1]==myints2[start2])
{cout<<myints[start1]<<"+"<<myints[start2]<<"="<<N<<endl;
break;
}
else if(myints[start1]<myints2[start2])
++start1;
else
--start2;
}
return 0;
}

时间: 2024-08-09 01:26:57

在一个数组中是否存在两个数A、B的和为M的相关文章

在一个数组中除两个数字只出现1次外,其它数字都出现了2次

前面总结了leecode上,改为成3出现,只有1个出现1次,的是通过记录每个位的个数来实现的如果count%3=1则为1,否则为0,实现起来充分利用了位运算. 编程之美上的,没有写过,今天写一下. http://blog.csdn.net/morewindows/article/details/8214003这个博客是MVP的博客,我自己也写一遍,其实核心就是 两个数的异或为1,只有1,0疑惑才为1,所以分离这两个数到不同的区间.对如何寻找1的位置做了优化(x&-x) #include<io

vuex中filter的使用 &amp;&amp; 快速判断一个数是否在一个数组中

vue中filter的使用 computed: mapState({ items: state => state.items.filter(function (value, index, arr) { return index < 5 }) }), 如上所示,对于vuex,我们在使用mapState获取state时, 可以使用filter来过滤其中的元素,在filter的回调函数中接受三个参数,第一个是value,即每一个元素的值: 第二个是index, 即每一个元素所在的index, 第三个

在一个数组中查找两个重复出现的数字

题目如下:现有一个数组长度为n+1,里面存放有1到n-2,顺序不定,其中有两个数字出现了两次,现在要找出那两个数字. 例子A={2, 3, 1, 4, 5, 2, 4}, 这个数组长度为7,存放了1到5,但2和4出现了两次,程序输出2和4 方法1 蛮力查找 主要思想:对于数组中的第i个数,查找i+1到末尾的所有整数,一个数如果出现了两次就可以在第一次后面找到第二次出现的数. 时间复杂度 O(n^2) #include<stdio.h> void find_duplicates(int* num

【c语言】二维数组中的查找,杨氏矩阵在一个二维数组中,每行都依照从左到右的递增的顺序排序,输入这种一个数组和一个数,推断数组中是否包括这个数

// 二维数组中的查找,杨氏矩阵在一个二维数组中.每行都依照从左到右的递增的顺序排序. // 每列都依照从上到下递增的顺序排序.请完毕一个函数,输入这种一个数组和一个数.推断数组中是否包括这个数 #include <stdio.h> #define col 4 #define rol 4 int yang(int(*p)[col], int num) { int i = 0; int j = col - 1; while (j+1) { int *q = &(p[i][j]); if

4-7 在一个数组中实现两个堆栈

本题要求在一个数组中实现两个堆栈. 函数接口定义: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, int Tag ); 其中Tag是堆栈编号,取1或2:MaxSize堆栈数组的规模:Stack结构定义如下: typedef int Position; struct SNode { ElementType *Data; Positio

牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。 牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。 这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。

牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等.问是否可行.牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍.这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次.输入描述: 输入一个正整数N (N <= 50) 接下来一行输入N个正整数,每个数均小于等于1e9. 输出描述: 假如经过若干次操作可以使得N个数都相等,那么输出"YES", 否则输出"NO" 输入例子: 2 1 2 输出例子: YES

每日一题16:在一个数组中实现两个栈

在一个数组中实现两个栈,当数组未填满是任一个栈不能溢出.解法是将一个栈从头开始往后插入,而另一个从后往前插入,如果插入一个元素后,两个栈的top指针未相遇,则表示数组未满,栈没有溢出. #include "stdafx.h" #include <iostream> using namespace std; struct special_stack { int capcity; int ltop,rtop; int* vals; }; special_stack* creat

6-7 在一个数组中实现两个堆栈

6-7 在一个数组中实现两个堆栈(20 分) 本题要求在一个数组中实现两个堆栈. 函数接口定义: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, int Tag ); 其中Tag是堆栈编号,取1或2:MaxSize堆栈数组的规模:Stack结构定义如下: typedef int Position; struct SNode { Ele

获取在一个数组中出现最多的字符及其所在的位置

获取在一个数组中出现最多的字符.个数及其所在的位置 <!DOCTYPE html> <html> <head> <title>一个数组中,出现次数最多的字符,及其位置</title> </head> <body> <script type="text/javascript"> var arr=["a","x","b","d