网上看到一个网友的微博有个题目:
题目简单:寻找数组1的元素在数组2对应的 下一个更大元素 .
给定两个 没有重复元素 的数组 nums1 和 nums2 ,其中nums1 是 nums2 的子集。找到 nums1 中每个元素在 nums2 中的下一个比其大的元素。
nums1 中数字 x 的下一个更大元素是指 x 在 nums2 中对应位置的右边的第一个比 x 大的元素。如果不存在,对应位置输出 -1 .
例如:
输入:
nums1 = [4,1,2], nums2 = [1,3,4,2].
输出:
[-1,3,-1]
网友用了 双for循环 + if ,并把结果输出到另一个新的数组.
当然,这种用Linq 也是很简便的.
int[] arr1 = { 4, 1, 2 };
int[] arr2 = { 1, 3, 4, 2 };
var rt = arr1.Select(o =>
{
var query = (arr2.Where(p => arr2.Contains(o) && p > o && arr2.ToList().IndexOf(p) > arr2.ToList().IndexOf(o)));
return query.Any() ? query.First() : -1;
}).ToArray ();
Console.WriteLine(string.Join(",", rt));