在leetcode上比较相同的算法speed-on-Go,PHP,Ruby,JS,Python。一般来说,Go是一个冠军,它的速度是Python的20倍,占用的内存更少。但当我解决这个任务时,我发现这个Go解决方案最容易产生资源。它需要很多时间和记忆。在
请解释一下为什么会这样。可能是我在当前递归解决方案中执行了一些资源贪婪的代码?在
Go:104毫秒,137.9 MB
func sortedArrayToBST(nums []int) *TreeNode {
if 0 == len(nums){
return nil
}
mid := len(nums)/2
return & TreeNode{Val: nums[mid], Left: sortedArrayToBST(nums[0:mid]), Right: sortedArrayToBST(nums[mid+1:]) }
}
Python:84毫秒,16.2 MB
^{2}$JS:72毫秒,37.6 MB
var sortedArrayToBST = function(nums) {
if( 0 == nums.length) return null;
let middle = parseInt(nums.length/2)
let ans = new TreeNode(nums[middle])
ans.left = sortedArrayToBST(nums.slice(0,middle))
ans.right = sortedArrayToBST(nums.slice(middle+1))
return ans;
};
下面是递归任务的标准快速执行示例:https://gist.github.com/lbvf50mobile/15751618dd514385b2dd601155a3aca9
目前没有回答
相关问题 更多 >
编程相关推荐