数组之间的距离
2012-12-02 21:19
218 查看
两数组最短距离
已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离。input
第一行为两个整数m,
n(1≤m, n≤1000),分别代表数组f[], g[]的长度。
第二行有m个元素,为数组f[]。
第三行有n个元素,为数组g[]。
output
数组的最短距离
Simple
Input
5 5 1 2 3 4 5 6 7 8 9 10
output
1
要求O(n+m)的算法;
#include<iostream> #include<limits.h> using namespace std; int main() { int a[1000],b[1000],i,j,m,n; cin>>m>>n; for(i=0;i<m;i++) cin>>a[i]; for(i=0;i<n;i++) cin>>b[i]; int mini=INT_MAX; i=0;j=0; while(i<m && j<n) if(a[i]>=b[j]) { if(mini>a[i]-b[j]) mini=a[i]-b[j]; j++; } else{ if(mini>b[j]-a[i]) mini=b[j]-a[i]; i++; } cout<<mini<<endl; return 0; }
当初做的时候就想到了归并排序中一个步骤,将二个有序的子序列合并成一个子序列。
此题的思想类似。
支配值数目
Description
已知f[]与g[]两个整数数组,元素都已经从小到大排好序,请写一个程序,算出f[]中比g[]中元素大的对数。换句话说,f[0]比g[]中多少个元素大,f[1]比g[]中多少个元素大等,这些值的总和就是要求的答案。
举个例子,如果f[]中有1,3,5,7,9,而g[]中有2,3,4,7,8。
那么:
f[0]比g[]中的所有元素都小;
f[1]比g[0]大;
f[2]比g[0]、g[1]、g[2]大;
f[3]比g[0]、g[1]、g[2]大;
f[4]比g[0]、g[1]、g[2]、g[3]、g[4]大;
所以答案是0+1+3+3+5=12
Input
第一行为两个整数m, n(1≤m, n≤1000),分别代表数组f[], g[]的长度。
第二行有m个元素,为数组f[]。
第三行有n个元素,为数组g[]。
Output
输出支配值。
Sample Input
5 5
1 3 5 7 9
2 3 4 7 8
Sample Output
12
#include "stdio.h" #define MAX 1001 int num1[MAX]; int num2[MAX]; int main () { int n; int m; int i; int sum = 0; int x; int y; x = y = 0; scanf ("%d%d",&n,&m); for (i = 0;i < n;i++) { scanf ("%d",num1+i); } for (i = 0;i < m;i++) { scanf ("%d",num2+i); } while (x < n && y < m) { if (num1[x] > num2[y]) { y++; }else { sum = sum + y; x++; } } for (i = x; i < n;i++) { sum = sum + y; } printf ("%d\n",sum); return 0; }
相关文章推荐
- Leetcode题目之求解数组之间的最大距离
- Java总哈希表的运用,判断一个数组中是否存在相同的元素之间的距离在k以内!
- 已知元素从小到大排列的两个数组x[]和y[],请写出一个程序算出两个数组彼此之间差的绝对值中最小的一个,这叫做数组的距离
- C#中交错数组int[][]和二维数组[,]之间的区别
- JAVA中list,set,数组之间的转换
- 字符串和字符数组之间的转换
- 关于字符串和byte数组在java和ios之间兼容的解决办法。
- 二叉树中任意两个节点之间的最大距离
- 调整数组顺序使奇数位于偶数前面,偶数和偶数之间的相对位置不变
- acm--两数组最短距离
- ArrayList 和数组之间的一些转换 Handler的主线程与子线程通信 内部类的使用
- 随机产生20个正整数存入数组a中,且每个数均在1000-9999之间(包含1000和9999)。对数组进行排序,要求按每个数的后三位的大小进行升序排列,然后取出满足此条件的前10个数放入数组b中,如果
- java中数组的合并以及与集合之间的相互转化
- 不改变正负数之间相对顺序重新排列数组
- 字典或者数组与JSON串之间的转换
- C指针与数组之间的细节
- Java面试题:1-100之间的数,被放在数组a[99]中,有一个数没有包含在其中,用java代码找出这个数
- List集合与Array数组之间的互相转换
- 字符串和字符数组之间的转换
- 深入 JAVA里面关于byte数组和String之间的转换问题