为了账号安全,请及时绑定邮箱和手机立即绑定

请教各位一个问题,求解答:做算法题的时候需要用语言提供的函数吗?各位有什么建议?

请教各位一个问题,求解答:做算法题的时候需要用语言提供的函数吗?各位有什么建议?

慕森王 2019-09-19 12:46:10
我举个例子,比如这题,旋转数组:https://leetcode-cn.com/probl...这里我用JavaScript语言来实现,先不看算法写的好不好,就看一下实现方式的对比。我写的第一种解法是:varrotate=function(nums,k){letlen=nums.length;for(leti=0;i0;j--){nums[j]=nums[j-1];}nums[0]=last;}};这样的算法有个好处,就是语言移植性很好,每个语言都有for循环,算法里面也没有用语言提供的函数。作为对比,使用语言提供的函数来写另外一种解法:varrotate=function(nums,k){varprev=nums.slice(0,nums.length-3);constremain=nums.slice(nums.length-3);//两数组连接起来constnewArr=remain.concat(prev);for(leti=0;i
查看完整描述

2 回答

?
呼如林

TA贡献1798条经验 获得超3个赞

用和不用内置函数,其实是表面的。算法,通常我们考虑时间复杂度、空间复杂度。本身来说,算法是脱离语言的,和语言没有任何关系的。
通常设计一个算法,用内置函数,那你得明白内置函数的实现原理、复杂度等,这样才能衡量你设计的算法的复杂度。
就比如一个JS里(不考虑稀疏数组的话)push函数,时间复杂度摊销O(1),unshift函数,时间复杂度O(n),这些函数可以用,但是在衡量算法优劣指标的时候,要考虑这些因素的影响,以及自己实现会不会比内置函数更优。
至于移植性,在不同语言之间通常是不存在的,也是不考虑的。移植性通常是对于同一门语言在不同平台之间。
                            
查看完整回答
反对 回复 2019-09-19
?
慕姐4208626

TA贡献1852条经验 获得超7个赞

算法题的核心是锻炼你的解题思维,所以用不用语言内置函数并不是重点。并且我们在实际处理的时候,应该写出无数种能想到的算法方式,从中挑选更优的,如果更优的解法包含内置函数,那也应该选取内置函数的。
                            
查看完整回答
反对 回复 2019-09-19
  • 2 回答
  • 0 关注
  • 276 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信