How to Solve Lonely Integer by Using Dictionary or Bit Manipulation
SOLUTION IN C# USING DICTIONARY
public static int lonelyinteger(List<int> a)
{
Dictionary<int,int> mydict = new Dictionary<int,int>();
int element = 0;
foreach(int i in a){
if(mydict.ContainsKey(i)){
mydict[i] += 1;
}
else{
mydict.Add(i, 1);
}
}
foreach(KeyValuePair<int,int> k in mydict){
if(mydict[k.Key] == 1){
element = k.Key;
}
}
return element;
SOLUTION IN C# USING BIT MANIPULATION : the best option
public static int lonelyinteger(List<int> a)
{
int result=0;
foreach(int i in a){
result ^=i;
}
return result;
}
PROBLEM:
Given an array of integers, where all elements but one occur twice, find the unique element.
Example
The unique element is .
Function Description
Complete the lonelyinteger function in the editor below.
lonelyinteger has the following parameter(s):
- int a[n]: an array of integers
Returns
- int: the element that occurs only once
Input Format
The first line contains a single integer, , the number of integers in the array.
The second line contains space-separated integers that describe the values in .
Constraints
- It is guaranteed that is an odd number and that there is one unique element.
- , where .
Sample Input 0
1
1
Sample Output 0
1
Explanation 0
There is only one element in the array, thus it is unique.
Sample Input 1
3
1 1 2
Sample Output 1
2
Explanation 1
We have two 's, and is unique.
Sample Input 2
5
0 0 1 2 1
Sample Output 2
2
Awesome
ReplyDelete