第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)教各位一個(gè)問(wèn)題,求解答:做算法題的時(shí)候需要用語(yǔ)言提供的函數(shù)嗎?各位有什么建議?

請(qǐng)教各位一個(gè)問(wèn)題,求解答:做算法題的時(shí)候需要用語(yǔ)言提供的函數(shù)嗎?各位有什么建議?

慕森王 2019-09-19 12:46:10
我舉個(gè)例子,比如這題,旋轉(zhuǎn)數(shù)組:https://leetcode-cn.com/probl...這里我用JavaScript語(yǔ)言來(lái)實(shí)現(xiàn),先不看算法寫的好不好,就看一下實(shí)現(xiàn)方式的對(duì)比。我寫的第一種解法是:varrotate=function(nums,k){letlen=nums.length;for(leti=0;i0;j--){nums[j]=nums[j-1];}nums[0]=last;}};這樣的算法有個(gè)好處,就是語(yǔ)言移植性很好,每個(gè)語(yǔ)言都有for循環(huán),算法里面也沒(méi)有用語(yǔ)言提供的函數(shù)。作為對(duì)比,使用語(yǔ)言提供的函數(shù)來(lái)寫另外一種解法:varrotate=function(nums,k){varprev=nums.slice(0,nums.length-3);constremain=nums.slice(nums.length-3);//兩數(shù)組連接起來(lái)constnewArr=remain.concat(prev);for(leti=0;i
查看完整描述

2 回答

?
呼如林

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊

用和不用內(nèi)置函數(shù),其實(shí)是表面的。算法,通常我們考慮時(shí)間復(fù)雜度、空間復(fù)雜度。本身來(lái)說(shuō),算法是脫離語(yǔ)言的,和語(yǔ)言沒(méi)有任何關(guān)系的。
通常設(shè)計(jì)一個(gè)算法,用內(nèi)置函數(shù),那你得明白內(nèi)置函數(shù)的實(shí)現(xiàn)原理、復(fù)雜度等,這樣才能衡量你設(shè)計(jì)的算法的復(fù)雜度。
就比如一個(gè)JS里(不考慮稀疏數(shù)組的話)push函數(shù),時(shí)間復(fù)雜度攤銷O(1),unshift函數(shù),時(shí)間復(fù)雜度O(n),這些函數(shù)可以用,但是在衡量算法優(yōu)劣指標(biāo)的時(shí)候,要考慮這些因素的影響,以及自己實(shí)現(xiàn)會(huì)不會(huì)比內(nèi)置函數(shù)更優(yōu)。
至于移植性,在不同語(yǔ)言之間通常是不存在的,也是不考慮的。移植性通常是對(duì)于同一門語(yǔ)言在不同平臺(tái)之間。
                            
查看完整回答
反對(duì) 回復(fù) 2019-09-19
?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個(gè)贊

算法題的核心是鍛煉你的解題思維,所以用不用語(yǔ)言內(nèi)置函數(shù)并不是重點(diǎn)。并且我們?cè)趯?shí)際處理的時(shí)候,應(yīng)該寫出無(wú)數(shù)種能想到的算法方式,從中挑選更優(yōu)的,如果更優(yōu)的解法包含內(nèi)置函數(shù),那也應(yīng)該選取內(nèi)置函數(shù)的。
                            
查看完整回答
反對(duì) 回復(fù) 2019-09-19
  • 2 回答
  • 0 關(guān)注
  • 289 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)