for(let i=0;i<3;i++){ let list=[ ]}
每次循环都创建一个数组,之前的数组会被销毁吗,指向相同吗
登陆购买课程后可参与讨论,去登陆吧
同学你好,对于你的问题解答如下:
1、会被销毁,JavaScript是在创建变量(对象,字符串等)时自动进行了分配内存,并且在不使用它们时“自动”释放(销毁)
2、每次循环,都是新创建的数组,指向不相同
祝学习愉快~
function k(arr) {
if (arr.length <= 1) { return arr; }
let base = arr[0];
let list1 = [];
let list2 = [];
for (let i = 1; i < arr.length; i++) {
if (arr[i] <= base) {
list1.push(arr[i]);
} else {
list2.push(arr[i]);
}
let left = k(list1);
let right = k(list2);
return left.concat([base]).concat(right);
那这个函数的空间复杂度是O(n)吗
不是的,同学可以画一下递归树,老师理解的是:每次函数调用都会递归两次,也就是二叉树,二叉树的高度是log(n),每一层的元素个数和为n,因此高度乘以层数就是用到的所有空间,即:空间复杂度为O(nlog(n)。
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
登录后可查看更多问答,登录/注册
入行前端,是明智的选择!市场需求大,就业前景好,入行门槛低,小白易上手 全新升级:技术更新,Vue3.0/TypeScript/React17.x; 技术更全面,从0基础到全栈开发再到大型项目构建
157 1
75 1
31 2
200 5
155 1
在线咨询
领取优惠
免费试听
领取大纲
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星