在本文中,我们将通过一个 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 程序检查给定数字的所有旋转是否大于或等于给定数字的详细内容。更多信息请关注PHP中文网其他相关文章!