JS将一个数组旋转k步的思路及操作是什么
Admin 2022-11-15 群英技术资讯 760 次浏览
这篇文章我们来了解“JS将一个数组旋转k步的思路及操作是什么”的内容,小编通过实际的案例向大家展示了操作过程,简单易懂,有需要的朋友可以参考了解看看,那么接下来就跟随小编的思路来往下学习吧,希望对大家学习或工作能有帮助。
将一个数组旋转k步
删除数组的最后一个元素:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.pop();
将新项目添加到数组的开头:
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.unshift("Lemon","Pineapple");
function rotate1(arr:number[],k:number):number[]{ const length = arr.length if(!k||length===0)return arr const step = Math.abs(k%length) for(let i =0;i<step;i++){ const n = arr.pop() if(n){ arr.unshift(n) } } return arr } const arr = [1,2,3,4,5,6,7,8] const arr1 = rotate1(arr,3) console.log(arr1)
JavaScript Array slice() 方法
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; var citrus = fruits.slice(1, 3);
JavaScript 数组 Const
const array1 = ['a', 'b', 'c']; const array2 = ['d', 'e', 'f']; const array3 = array1.concat(array2); console.log(array3); // expected output: Array ["a", "b", "c", "d", "e", "f"]
/** * 旋转数组K步 -使用concat * @param arr arr * @param k k * @returns arr */ function rotate2(arr:number[],k:number):number[]{ const length = arr.length if(!k || length===0) return arr const step = Math.abs(k%length) const part1 = arr.splice(-step) const part2 = arr.splice(0,length-step) arr = arr.concat(part1,part2) return arr } const arr2 = [1,2,3,4,5,6,7,8] const arr3 = rotate2(arr2,3) console.log(arr3)
分析代码,整理思路,尽量找出最优解,编写代码不仅要书写功能测试,而且要养成编写单元测试的习惯,保证程序的健壮性
复杂度分析:
- 思路1的时间复杂度为O(n^2),空间复杂度为O(1)
- 思路2的时间复杂度为O(1),空间复杂度为O(n)
前端重时间轻空间,思路2更佳
时间复杂度O(1)和O(n)差别很大
5. 数组是一个有序结构,数组的unshift、shirt、splice操作都很慢,pop和push都很快,.slice不会改变原数组,时间复杂度为0(1)
//性能测试 const arr4 = [] for(let i =0;i<10 * 10000;i++){ arr4.push(i) } console.time('rotate1') rotate1(arr4,9*10000) console.timeEnd('rotate1') const arr5 = [] for(let i=0;i< 10 * 10000;i++){ arr5.push(i) } console.time('rotate2') rotate2(arr5,9*10000) console.timeEnd('rotate2')
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章给大家分享的是vue如何实现文件的上传下载功能,这里会使用到的技术除了vue,还有axios、springboot。实现思路及代码如下,文中示例代码介绍的非常详细,感兴趣的朋友接下来一起跟随小编看看吧。
JavaScript本地存储与会话存储的实现介绍 目录 一.简单介绍 二.localStorage本地存储 三.sessionStorage会话存储 总结 一.简单介绍 本地存储和会话存储的目的,是将所输入的文件存入到浏览器中,在需要的时候,直接调用,但是本地存储和会话存储有着一定的区别,本地存储,在不主动删除的情况下,会一直保留在浏览器中,会话存储是,当前保存的内容,页面刷新还会保留在浏览器中,但是关闭页面在打开时,会发现没有数据了.这是他们两的用处和区别. 二.localStorage本地存储 如下代码 我们先给button一个监听事件,让
什么是Express中间件?Node中要怎么使用?下面本篇文章就来给大家介绍一下Express中间件的简单使用方法,希望对大家有所帮助!
vue如何实现登陆跳转的功能?现在很多网站和APP都需要注册登录使用,因此我们常常会需要实现登陆跳转的功能,下面就给大家分享下vue框架实现登陆跳转的功能的代码,效果如下,感兴趣的朋友可以参考。
本文主要给大家分享的是用vue如何实现3d标签云的内容,小编觉得比较有意思,下文有实现效果及代码供大家参考,感兴趣的朋友可以了解看看,接下来我们就一起学习一下吧。
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008