四川建设银行手机银行下载官方网站,wordpress 配置邮件,wordpress成品网站免费,网络营销制度课完整版方法一 个人方法#xff1a; 题目意思就是求在i1;i的循环条件下#xff0c;arr[i]-arr[arr.length-1]的最大值分别为多少#xff0c;最后一项默认为-1
用slice方法可以每次把数组第一位去除#xff0c;得到求最大值的目标数组
Math的max方法可以直接返回数组里的最大值
…
方法一 个人方法 题目意思就是求在i1;i的循环条件下arr[i]-arr[arr.length-1]的最大值分别为多少最后一项默认为-1
用slice方法可以每次把数组第一位去除得到求最大值的目标数组
Math的max方法可以直接返回数组里的最大值
但是不能每次循环都求一遍目标数组的最大值这样会超时。我们可以发现当求过一遍右侧最大元素后从当前元素位置到最大元素的位置之间最大元素都是同一个元素只有当最大元素也被从数组中去除才需要找新的右侧最大元素
var replaceElements function(arr) {let res[],max-999for(let i0;iarr.length-1;i){if(arr[i]max){res.push(max)}else{let temparr.slice(i1)maxMath.max(...temp)res.push(max)}}res.push(-1)return res
};
消耗时间和内存情况 方法二 逆序遍历
将数组反过来再按照题目意思那就是循环对数组里每一个元素进行比较求最大值当max没有变化时一直加入maxmax变化后加入新的max
var replaceElements function(arr) {let res[],max-999res.push(-1)for(let iarr.length-1;i0;i--){maxmaxarr[i]?arr[i]:maxres.push(max)}return res.reverse()
};
消耗时间和内存情况