JavaScript 程序检查是否可以通过旋转数组来增加或减少数组

JavaScript 程序检查是否可以通过旋转数组来增加或减少数组

数组的旋转是指将数组假设为圆形数组,每次旋转时将数组的元素向左或向右旋转一个索引,一端的元素可以采用另一端的值。递增数组意味着每个元素将大于或等于其前一个元素,递减数组意味着每个元素将小于或等于前一个元素。

在这个问题中,我们给定一个数组,我们可以向左或向右旋转数组,我们必须找出在一定的旋转(可能为零)之后是否可以使数组增加或减少。 p>

天真的方法

在这种方法中,我们将旋转数组,并且对于每次旋转,我们将检查当前数组是增加还是减少。

示例

在下面的示例中,我们检查是否可以通过旋转给定数组来增加或减少它。以下是输入和预期输出。

输入:arr = [3, 4, 5, 6, 1, 2]

立即学习“Java免费学习笔记(深入)”;

预期输出:是

输入:arr = [ 5, 1, 6, 2, 5, 3 ]

预期输出:否

示例

  1. // function to rotate the given arrayfunction rotate(arr){ var l = 0; var r = arr.length-1; while(l arr[i-1]){ return false; } } return true;}// function to check whether the given array can become// increasing or decreasing after certain rotationsfunction check(arr){ var k = arr.length while(k--){ if(increasing(arr) || decreasing(arr)){ return true; } arr = rotate(arr); } return false;}// defining the arr'svar arr1 = [3, 4, 5, 6, 1, 2]var arr2 = [5, 1, 6, 2, 5, 3]console.log("The given array is: ");console.log(arr1)if(check(arr1) == true){ console.log("Yes, after some rotations given array can be transformed into an increasing or decreasing array");}else{ console.log("No, after some rotations given array cannot be transformed into an increasing or decreasing array");}console.log("The given array is: ");console.log(arr2)if(check(arr2) == true){ console.log("Yes, after some rotations given array can be transformed into an increasing or decreasing array");}else{ console.log("No, after some rotations given array cannot be transformed into an increasing or decreasing array");}

登录后复制

输出

  1. The given array is: [ 3, 4, 5, 6, 1, 2 ]Yes, after some rotations given array can be transformed into an increasing or decreasing arrayThe given array is: [ 5, 1, 6, 2, 5, 3 ]No, after some rotations given array cannot be transformed into an increasing or decreasing array

登录后复制

上述代码的时间复杂度为O(N*N),空间复杂度为O(1)。

高效的方法

在前面的数组中,我们检查了每次旋转数组是否增加或减少,在这种方法中,我们将部分检查增加或减少的数组。

示例

  1. // function to check if the given array is increasing or notfunction increasing(arr){ // getting the size of array var len = arr.length // traversing over the array var i = 0; for(var i = 1; i arr[i-1]){ break; } } if(i == len) return true; i++; for(; i arr[i-1]){ return false; } } return arr[len-1] >= arr[0];}// function to check whether the given array can become increasing or decreasing after certain rotationsfunction check(arr){ if(increasing(arr) || decreasing(arr)){ return true; } else{ return false; }}// defining the arr'svar arr1 = [3, 4, 7, 6, 1, 2]var arr2 = [5, 1, 6, 2, 5, 3]console.log("The given array is: ");console.log(arr1)if(check(arr1) == true){ console.log("Yes, after some rotations given array can be transformed into an increasing or decreasing array");}else{ console.log("No, after some rotations given array cannot be transformed into an increasing or decreasing array");}console.log("The given array is: ");console.log(arr2)if(check(arr2) == true){ console.log("Yes, after some rotations given array can be transformed into an increasing or decreasing array");}else{ console.log("No, after some rotations given array cannot be transformed into an increasing or decreasing array");}

登录后复制

输出

  1. The given array is: [ 3, 4, 7, 6, 1, 2 ]No, after some rotations given array cannot be transformed into an increasing or decreasing arrayThe given array is: [ 5, 1, 6, 2, 5, 3 ]No, after some rotations given array cannot be transformed into an increasing or decreasing array

登录后复制

上述代码的时间复杂度为O(N),空间复杂度为O(1)。

结论

在本教程中,我们实现了一个 JavaScript 程序,用于检查是否可以通过旋转给定数组来增加或减少它。我们实现了两种时间复杂度为 O(N*N) 和 O(N) 的方法,并且空间复杂度均为 O(1)。

以上就是JavaScript 程序检查是否可以通过旋转数组来增加或减少数组的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    利用HTML5 Page Visibility API实现页面可见性控制

    2025-3-7 17:37:22

    编程技术

    JavaScript 程序求方阵中的最大值和最小值

    2025-3-7 17:37:32

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索