刚出来的搜狐三道编程题,有大神用java给出范码么?

图片说明
图片说明
图片说明

第一个用递归 ,遍历处理 .感觉数据量多了,达不到要求的性能
第二个感觉像是求数组中最小的几个数,比较简单 ,
第三个循环链表处理

C#版本的 第一个问题!
int N = 10;
string arr = "2 0 1 5 1 11 1 2 2 5";

        int r = 0;

        List<string> lis = arr.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).ToList();
        for (int i = 0; i < lis.Count; i += Convert.ToInt32(lis[i]))
        {
            int n = Convert.ToInt32(lis[i]);
            if (n == 0)
            {
                r = -1;
                break;
            }
            r++;
        }