-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathFindPairNumber.cs
More file actions
158 lines (142 loc) · 4.88 KB
/
FindPairNumber.cs
File metadata and controls
158 lines (142 loc) · 4.88 KB
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
using System;
using System.Collections.Generic;
namespace DA.Algorithms.Problems
{
public static class FindPairNumber
{
/// <summary>
/// Given an array of n numbers, find two elements
/// such that their sum is equal to “value”.
/// </summary>
///
/// <exception cref="System.ArgumentNullException" />
public static bool FindPair (int[] array, int value)
{
if (array == null)
{
throw new System.ArgumentNullException ();
}
for (int i = 0; i < array.Length; i++)
{
for (int j = i + 1; j < array.Length; j++)
{
if ((array[i] + array[j]) == value)
{
return true;
}
}
}
return false;
}
/// <summary>
/// Given an array of n numbers, find two elements
/// such that their sum is equal to “targetValue”.
/// </summary>
///
/// <exception cref="System.ArgumentNullException" />
///
/// <param name="targetValue">Value that need to find</param>
/// <param name="firstValue">First value of a pair sum</param>
/// <param name="secondValue">Second value of a pair sum</param>
public static bool FindPair (int[] array, int targetValue, out int firstValue, out int secondValue)
{
if (array == null)
{
throw new System.ArgumentNullException ();
}
for (int i = 0; i < array.Length; i++)
{
for (int j = i + 1; j < array.Length; j++)
{
if ((array[i] + array[j]) == targetValue)
{
firstValue = array[i];
secondValue = array[j];
return true;
}
}
}
firstValue = int.MinValue;
secondValue = int.MinValue;
return false;
}
/// <summary>
/// Given an array of n numbers, find two elements
/// such that their sum is equal to “value”.
/// </summary>
///
/// <exception cref="System.ArgumentNullException" />
///
/// <param name="value">Value that need to find</param>
public static bool FindPairUsingSorting (int[] array, int value)
{
int first = 0;
int second = array.Length - 1;
int currentSum = 0;
for (int i = 0; i < array.Length; i++)
{
if (first >= second) break;
currentSum = array[first] + array[second];
if (currentSum == value) return true;
else if (currentSum < value) ++first;
else --second;
}
return false;
}
/// <summary>
/// Given an array of n numbers, find two elements
/// such that their sum is equal to “value”.
/// </summary>
///
/// <exception cref="System.ArgumentNullException" />
///
/// <param name="value">Value that need to find</param>
/// <param name="first">First value of a pair sum</param>
/// <param name="second">Second value of a pair sum</param>
public static bool FindPairUsingSorting (int[] array, int value, out int first, out int second)
{
int firstIndex = 0;
int secondIndex = array.Length - 1;
int currentSum = 0;
for (int i = 0; i < array.Length; i++)
{
if (firstIndex >= secondIndex) break;
currentSum = array[firstIndex] + array[secondIndex];
if (currentSum == value)
{
first = array[firstIndex];
second = array[secondIndex];
return true;
}
else if (currentSum < value)
{
++firstIndex;
}
else
{
--secondIndex;
}
}
first = int.MinValue;
second = int.MinValue;
return false;
}
/// <summary>
/// Given an array of n numbers, find two elements
/// such that their sum is equal to “value”.
/// </summary>
public static bool FindPairUsingHashTable (int[] array, int value)
{
HashSet<int> hashSet = new HashSet<int> ();
for (int i = 0; i < array.Length; i++)
{
if (hashSet.Contains (value - array[i]))
{
return true;
}
hashSet.Add (array[i]);
}
return false;
}
}
}