思路
这个比较简单,思路其实就是遍历数组中所有的数字做一下对比,有的话记录一下即可。但是这几天看到了个双向列表LinkList的方法,所以拿出来做一下对比看看。
实现
普通数组的方法
/// <summary>
/// 数组比较出现次数(int)
/// </summary>
/// <param name="arr"></param>
/// <param name="number"></param>
/// <returns></returns>
int GetNumCount(int[] arr,int number)
{
int count = 0;
for (int i = 0; i < arr.Length; i++)
{
if (arr[i] == number)
{
count++;
}
}
return count;
}
双向列表的方法
/// <summary>
/// 双向链表比较出现次数(int)
/// </summary>
/// <param name="arr"></param>
/// <param name="number"></param>
/// <returns></returns>
int GetNumCountLinkedList(int[] arr, int number)
{
int count = 0;
LinkedList<int> numbers = new LinkedList<int>(arr);
int givenInt = 1;
LinkedListNode<int> currentNode = numbers.First;
while (currentNode != null)
{
if (currentNode.Value == givenInt)
{
count++;
}
currentNode = currentNode.Next;
}
return count;
}
对比:两者都可以去实现上述的方法,但是数组的方法我们需要自己手动的去寻找数组的下一个,但是双向列表不同,它有一个单独的LinkedList的持有类LinkedListNode这个就给我们提供了方便快速找到上一个和下一个值。
总结
这里LinkedList只介绍用法,性能分析放在下面和ArrayList做比较分析性能和底层实现。