我想知道在遍历字典时是否有任何方法可以存储键值对枚举器的值。我想将枚举数的键和值存储在某个变量中。解决办法是什么?我想做的是在遍历字典时引用当前键值对和字典中的下一个键值对。我不知道为什么它不起作用
解决方案可能如下所示:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
using System.Diagnostics;
namespace WellPuzzle
{
class Solution
{
Hashtable h1 = new Hashtable();
List<int> listofitemstoremove = new List<int>();
Dictionary<int, int> d1 = new Dictionary<int, int>();
public void falling_disks(int[] A, int[] B)
{
var itemstoremove = new List<int>();
var en = d1.GetEnumerator();
int count = 0;
for (int i = 0; i <= A.Length - 1; i++)
{
d1.Add(count++, A[i]);
}
//for each incoming element in array
foreach (int ele in B)
{
//store prev as current position of enumerator
var prev = new KeyValuePair<int, int>();
prev = en.Current;
//check if it is possible to iterate to next element in dictionary
if (en.MoveNext())
{
//loop till end of dictionary
while (en.MoveNext())
{
//if current value of enumerator in dictionary is less than incoming element and check if corroesponding key for that value is in hashtable or not
if (en.Current.Value <= ele && !(checkifthatvalueisfilled(en.Current.Key)))
continue;
else
{//if current enumerator value is greater than incoming element from array B then remove all elements from prev reference till end of dictionary
h1.Add(en.Current.Key, true);
listofitemstoremove.Add(en.Current.Key);
}
prev = en.Current;
}
if (!(h1.ContainsKey(en.Current.Key)))
{
h1.Add(en.Current.Key, true);
listofitemstoremove.Add(en.Current.Key);
}
}
else
{
h1.Add(prev.Key, true);
listofitemstoremove.Add(prev.Key);
}
foreach (int item in listofitemstoremove)
{
for (int i = item; i < d1.Count; i++)
{
d1.Remove(i++);
}
}
}
Console.WriteLine(h1.Count);
}
public bool checkifthatvalueisfilled(int value)
{
if (h1.ContainsValue(h1.ContainsKey(value)) == true)
return true;
else return false;
}
}
class Program
{
static void Main(string[] args)
{
int[] A = new int[] { 5, 6, 4, 3, 6, 2, 3 };
int[] B = new int[] { 2, 3 };
Solution s1 = new Solution();
s1.falling_disks(A, B);
}
}
}