-
Notifications
You must be signed in to change notification settings - Fork 7
/
Program.cs
46 lines (43 loc) · 1.57 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 对 | arr1[i] - arr1[j] | + | arr2[i] - arr2[j] | + | i - j | 展开讨论,可以得到以下8种情况
// +++: (1i + 2i + i) - (1j + 2j + j)
// +-+: (1i - 2i + i) - (1j - 2j + j)
// --+: (1j + 2j - j) - (1i + i2 - i)
// -++: (1j - 2j - j) - (1i - 2i - i)
// ++-: (1j + 2j + j) - (1i + 2i + i)
// +--: (1j - 2j + j) - (1i - 2i + i)
// ---: (1i + i2 - i) - (1j + 2j - j)
// -+-: (1i - 2i - i) - (1j - 2j - j)
// 以上8种情况可以合并为以下4种情况。
// arr1[i] + arr2[i] + i
// arr1[i] - arr2[i] + i
// arr1[i] + arr2[i] - i
// arr1[i] - arr2[i] - i
// 遍历数组,找到这四种情况的最大值和最小值分别是什么,存入max和min
using System;
namespace MaximumOfAbsoluteValueExpression
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
static int MaxAbsValExpr(int[] arr1, int[] arr2)
{
int[] max = {int.MinValue, int.MinValue, int.MinValue, int.MinValue};
int[] min = {int.MaxValue, int.MaxValue, int.MaxValue, int.MaxValue};
int[] sign = {1, 1, -1, -1, 1};
var res = 0;
for (int i = 0; i < arr1.Length; i++)
{
for (int j = 0; j < 4; j++)
{
max[j] = Math.Max(max[j], arr1[i] + sign[j] * arr2[i] + sign[j + 1] * i);
min[j] = Math.Min(min[j], arr1[i] + sign[j] * arr2[i] + sign[j + 1] * i);
res = Math.Max(res, max[j] - min[j]);
}
}
return res;
}
}
}