我举个例子,比如这题,旋转数组:https://leetcode-cn.com/probl...这里我用JavaScript语言来实现,先不看算法写的好不好,就看一下实现方式的对比。我写的第一种解法是:varrotate=function(nums,k){letlen=nums.length;for(leti=0;iletlast=nums[len-1]; //数组右移算法for(letj=len-1;j>0;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;inums[i]=newArr[i]; }};看上去使用语言提供的函数来解算法似乎比一般的写法要高级一些。我不明白的是,咱们在做算法训练的时候,到底要不要用语言提供的函数呢?市面上有些书名叫:《算法-xx语言实现》是不是这些书里面的算法实现都是使用语言提供的函数来写的呀?我个人是倾向于优先使用一般的解法,把一般的解法写出来后,才会来考虑使用擅长的语言提供的函数来写一个感觉更高级的实现。不知道各位大神是怎么思考的?求教。
慕丝7291255
杨__羊羊
相关分类