void Start () {
List<int> a = new List<int> { 1, 3,3, 5,6, 7 };
List<int> b = new List<int> { 2, 3,4, 6, 8 };
List<int> result = Merge(a, b);
if (result != null)
for (int i = 0; i < result.Count; i++)
{
Debug.Log(result[i]);
}
}
List<int> Merge(List<int> list1, List<int> list2)
{
List<int> result = new List<int>();
int i = 0, j = 0;
while (i < list1.Count && j < list2.Count)
{
if (list1[i] < list2[j])
{
//ADD前的去重判断
if (result.Count == 0 || (result[result.Count - 1] != list1[i]))
result.Add(list1[i]);
i++;
}
else if (list1[i] == list2[j])
{
if (result.Count == 0 || (result[result.Count - 1] != list1[i]))
result.Add(list1[i]);
i++;
j++;
}
else
{
if (result.Count == 0 || (result[result.Count - 1] != list2[j]))
result.Add(list2[j]);
j++;
}
}
//下面是当其中一个数组元素全部添加到result了,另一个还没添加完 继续添加。
while (i < list1.Count)
{
if (result.Count == 0 || (result[result.Count - 1] != list1[i]))
result.Add(list1[i]);
i++;
}
while (j < list2.Count)
{
if (result.Count == 0 || (result[result.Count - 1] != list2[j]))
result.Add(list2[j]);
j++;
}
return result;
}