JavaScript 程序检查给定数字的所有旋转是否大于或等于给定数字

在本文中,我们将通过一个 JavaScript 程序来检查给定数字的所有旋转是否大于或等于给定数字。我们将编写一个算法并解释我们正在做的每一步。将要讨论的代码的时间复杂度将是乐观的,而空间复杂度将从一种代码到另一种代码都会得到改善。

问题简介

在这个问题中,我们得到一个数字,我们必须检查每个旋转是否都大于当前数字,或者简单地我们必须找到小于当前数字的当前数字的旋转如果轮换中存在较小的数字,那么我们将返回 false,否则我们将返回 true。

给定数字的旋转

示例

给定数字的旋转可以有顺时针或逆时针两种类型。在顺时针旋转中,我们从数字中取出最后一位数字并将其添加到第一个数字之前。例如 –

var number = 1234 
var last_digit = number%10;
number /= 10;
number = Math.floor(number)
var answer = last_digit.toString() + number.toString();
console.log("The first rotation of the given number is: " + answer)

在上面的代码中,我们给出了一个数字,我们必须找到给定数字的第一次旋转。首先,我们将当前数字的最后一位存储在另一个变量中,然后通过将给定数字除以 10 并取下限来删除该数字的最后一位。

最后,我们在最后一位数字后面附加了当前数字,这给了我们第一次旋转。

示例

要获取当前数字的下一个旋转或第二个旋转,我们可以获取第一个旋转的下一个旋转,甚至我们可以通过对任何旋转通用的另一种方法来实现,让我们通过代码来看看 –

var number = 1234 
var i = 2
var n_string = number.toString()
var last_i_elements = n_string.substring(n_string.length-i);
var answer = last_i_elements+ n_string.substring(0,n_string.length-i);
console.log("The ith rotation of the given number is: " + answer)

在上面的代码中,我们给出了一个数字,我们必须找到给定数字的第 i 次旋转。首先,我们将当前数字的最后“i”位存储在另一个变量中。

最后,我们在包含最后“i”数字的字符串后面附加了当前数字,这给了我们第一次旋转。

上面讨论的方法是顺时针旋转数字,逆时针旋转我们必须从前面选择数字并将其附加到最后。

当没有指定我们必须选择哪种旋转方式时,我们会选择顺时针方向。因此,在示例中,我们将看到顺时针旋转。

方法

这种方法是暴力方法,在这种方法中,我们将找到给定数字的每次旋转,并检查每个更大的数字。如果我们发现任何小于当前数字的数字,那么我们将返回 false,否则返回 true。

示例

首先让我们看一下代码,然后我们将转向代码的解释 –

function check(number,i){
   var n_string = number.toString()
   var last_i_elements = n_string.substring(n_string.length-i);
   var answer = last_i_elements+ n_string.substring(0,n_string.length-i);
   if(answer < n_string){
      return false;
   }
   return true;
}

var number = 12345
// checking for every rotation
var ans = true;
for(var i=1;i<number.toString().length;i++){
   ans = check(number,i);
   if(ans == false){
      break;
   }
}
if(ans == true){
   console.log("There is no rotation present which is less then given number")
}
else{
   console.log("There is a rotation of given number present which is less then given number")
}

在上面的程序中,首先我们在 for 循环中从 1 迭代到数字的大小减 1,以得到从 1 到大小减 1 的每次旋转。在每次迭代中,我们调用了一个预定义的函数。

在函数中,我们将获取第 i 个旋转,该旋转作为参数传递给函数并与给定的数字进行比较。如果第 i 次旋转小于给定的数字,那么我们将返回 false 作为返回值,否则返回 true。

我们维护了一个名为answer的变量,它将存储从函数返回的真值和假值,并根据要求打印答案。

时间和空间复杂度

在上面的代码中,我们总共调用了 check() 函数 n 次,其中 n 是给定数字的大小。在函数内部,我们创建了一个子字符串,它是给定数字的副本,并进行 n 次迭代,这意味着我们使用了 n*n 次。因此,给定函数的时间复杂度为 O(N*N)。

在检查函数中,每次我们创建给定数字的副本时,这意味着我们正在使用额外的 N 空间。因此,给定函数的空间复杂度为 O(N)。

总体思路

在上面的代码中,如果所有数字都不同,那么我们只需 O(N) 时间复杂度和 O(1) 空间复杂度即可得到答案,因为如果任何数字小于第一个数字,则意味着存在一个与初始数量相比,在精确的一轮旋转中,数字可能会更少。

结论

在本教程中,我们通过一个 JavaScript 程序来检查给定数字的所有旋转是否大于或等于给定数字。程序的时间复杂度为 O(N*N),空间复杂度为 O(N),其中 N 是给定数字的大小。我们已经实现了一个程序,我们可以找到给定数字的每次旋转并与原始数字进行比较。

以上就是JavaScript 程序检查给定数字的所有旋转是否大于或等于给定数字的详细内容,更多请关注双恒网络其它相关文章!

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!
7. 如遇到加密压缩包,请使用WINRAR解压,如遇到无法解压的请联系管理员!
8. 精力有限,不少源码未能详细测试(解密),不能分辨部分源码是病毒还是误报,所以没有进行任何修改,大家使用前请进行甄别
9.本站默认解压密码为:www.sudo1.com
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。
本站信息来自网络收集整理,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序和内容,请支持正版,购买注册,得到更好的正版服务。
我们非常重视版权问题,如有侵权请邮件与我们联系处理。敬请谅解!

云资源网 » JavaScript 程序检查给定数字的所有旋转是否大于或等于给定数字

常见问题FAQ

免费下载或者VIP会员专享资源能否直接商用?
本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
提示下载完但解压或打开不了?
最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。 若排除这种情况,可在对应资源底部留言,或 联络我们.。
你们有qq群吗怎么加入?
当然有的,如果你是帝国cms、易优cms、和pbootcms系统的爱好者你可以加入我们的QQ千人交流群https://www.sudo1.com/page-qun.html。
  • 会员数(个)
  • 12334资源数(个)
  •        
  • 资源(G)
  •        
  • 今日下载
  • 1413稳定运行(天)

提供最优质的资源集合

立即查看 了解详情