比如有一个数组, a[100],每隔两个删除一个, 到数组末尾再从头顺序再来,问最后一个被删除的是谁? 

解决方案 »

  1.   

     protected void Page_Load(object sender, EventArgs e)
            {
                List<int> list = new List<int>();
                for (int i = 1; i <= 100; i++)
                {
                    list.Add(i);
                }
                Delete(list);
                Response.Write(list[2].ToString());
            }private void Delete(List<int> list)
            {
                int index = 0;
                int count = list.Count;
                for (int i = 1; i <= count / 3; i++)
                {
                    list.Remove(list[i * 3 - 1 - index]);
                    index++;
                }
                if (list.Count <= 3)
                {
                    return;
                }
                Delete(list);
                return;
            }
    输出95思路是,不停删除被3整除的(index为2,5,8……的),删到数组只剩下3个时,第3个就是最后被删的你的题目没说明第一个删不删,如果第一个删,把循环的i=1改成i=0
      

  2.   

     
    int[] arr = new int[100];
                for (int i = 0; i < 100; i++)
                {
                    arr[i] = i;
                }
                List<int> temList = arr.ToList();
              int lenght = 100;
                for (int i = 0; i < lenght; i++)
                {                temList.RemoveAt(i);
                    lenght = lenght - 1;
                    i = i + 1;
                }
                int[] getArr = temList.ToArray();
     
    这就是隔两个删除
      

  3.   

    static void Main(string[] args)
            {
                List<int> list = new List<int>();
                for (int i = 0; i < 100; i++)
                {
                    list.Add(i);
                }
                GetLastList(list);
                Console.WriteLine(list[0].ToString());
                Console.ReadLine();
            }
            private static void GetLastList(List<int> list)
            {
                for (int i = 0; i < list.Count; i = i + 2)
                {
                    list.RemoveAt(i);
                }
                if (list.Count != 1)
                {
                    GetLastList(list);
                }
            }