1. 程式人生 > 其它 >Hadoop面試題(一)

Hadoop面試題(一)

一維字首和

題目描述

輸入一個長度為n的整數序列。

接下來再輸入m個詢問,每個詢問輸入一對l,r。

對於每個詢問,輸出原序列中從第l個數到第r個數的和。

【輸入格式】

第一行包含兩個整數nm

第二行包含n個整數,表示整數數列。

接下來m行,每行包含兩個整數lr,表示一個詢問的區間範圍。

【輸出格式】

mm行,每行輸出一個詢問的結果。

【資料範圍】

1≤l≤r≤n,
1≤n,m≤100000,
−1000≤數列中元素的值≤1000

【輸入樣例】

5 3

2 1 3 6 4

1 2

1 3

2 4

【輸出樣例】

3

6

10

 1 #include <iostream>
 2 using
namespace std; 3 const int N = 100009; 4 int num[N]; 5 int main() 6 { 7 int n,q; 8 cin >> n >> q; 9 for(int i = 1;i <= n;++i) 10 { 11 int a; 12 cin >> a; 13 num[i] = a + num[i-1]; 14 } 15 while(q--) 16 { 17 int l,r;
18 cin >> l >> r; 19 cout << num[r] - num[l - 1] << endl; 20 } 21 return 0; 22 }

二維矩陣字首和

輸入一個nm列的整數矩陣,再輸入q個詢問,每個詢問包含四個整數x1,y1,x2,y2,表示一個子矩陣的左上角座標和右下角座標。

對於每個詢問輸出子矩陣中所有數的和。

輸入格式

第一行包含三個整數n,m,q。

接下來n行,每行包含mm個整數,表示整數矩陣。

接下來q行,每行包含四個整數x1,y1,x2,y2,表示一組詢問。

輸出格式

qq行,每行輸出一個詢問的結果。

資料範圍

1≤n,m≤1000,
1≤q≤200000,
1≤x1≤x2≤n,
1≤y1≤y2≤m,
−1000≤矩陣內元素的值≤1000

輸入樣例:

3 4 3
1 7 2 4
3 6 2 8
2 1 2 3
1 1 2 2
2 1 3 4
1 3 3 4

輸出樣例:

17
27
21
 1 #include <iostream>
 2 using namespace std;
 3 const int N = 1009;
 4 int s[N][N];
 5 int n,m,q;
 6 int x1,y1,x2,y2;
 7 
 8 int main()
 9 {
10     cin >> n >> m >> q;
11     for(int i = 1;i <= n;++i)
12         for(int j = 1;j <= m;++j)
13         {
14             int num;
15             cin >> num;
16             s[i][j] = s[i - 1][j] + s[i][j - 1] - s[i - 1][j - 1] + num;
17         }
18         
19     while(q--)
20     {
21         cin >> x1 >> y1 >> x2 >> y2;
22         cout << s[x2][y2] - s[x1 - 1][y2] - s[x2][y1 - 1] + s[x1 - 1][y1 - 1] << endl; 
23     }
24     return 0;
25 }