LeetCode刷题,发现其他人的答案不是很简明,这里是提供一个8行的解法
public TreeNode ConstructMaximumbinaryTree(int[] nums)
{
if(nums.Length ==0){return null;}
int mi;
mi = Array.IndexOf(nums, nums.Max());
TreeNode treeNode = new TreeNode(nums.Max());
treeNode.left = ConstructMaximumbinaryTree(nums.Take(mi).ToArray());
treeNode.right = ConstructMaximumbinaryTree(nums.Skip(mi+1).ToArray());
return treeNode;
}
注意这里比较坑的是C#中Take(mi)截取的新数组不包含nums[mi],而Skip(mi)截取的新数组包含nums[mi]。
所以第一句mi不用减1,第二句mi要+1。