Java 如何在数组中保持旋转计数?

Java 如何在数组中保持旋转计数?,java,arrays,counter,Java,Arrays,Counter,给定一个整数数组,该数组按顺时针方向按某个数字k进行排序(按递增顺序)。找到并返回k。 我写的代码如下。。 我得到了错误的结果 public class CheckRotation { public static int arrayRotateCheck(int[] arr){ /* Your class should be named CheckRotation * Don't write main(). * Don't r

给定一个整数数组,该数组按顺时针方向按某个数字k进行排序(按递增顺序)。找到并返回k。 我写的代码如下。。 我得到了错误的结果

public class CheckRotation {    

    public static int arrayRotateCheck(int[] arr){
        /* Your class should be named CheckRotation
         * Don't write main().
         * Don't read input, it is passed as function argument.
         * Return output and don't print it.
         * Taking input and printing output is handled automatically.
         */
      int s=0;
      int next=0;
      int prev=0;
      int mid=0;
      int n = arr.length-1;
      while(s<=n)
      {
        mid=  s+(n-s)/2;
        next=(mid+1)%n;
        prev=(mid-1)%n;
        if(arr[s]<=arr[n])
        { 
          return s;
        }
        if(arr[mid]<=next && arr[mid]<=prev)
       {
         return mid;
       }

        if(arr[mid]<arr[n])
               n= mid-1;
        if(arr[mid]>arr[s])
          s= mid +1;

      }
      return Integer.MAX_VALUE;
    }
}
公共类CheckRotation{
公共静态int阵列状态检查(int[]arr){
/*您的类应命名为CheckRotation
*不要写main()。
*不读取输入,它作为函数参数传递。
*返回输出,不打印输出。
*自动处理输入和打印输出。
*/
int s=0;
int next=0;
int prev=0;
int-mid=0;
int n=arr.length-1;

(s如果我正确理解你的问题,如果一个组合数组顺时针旋转,所有元素都会向左移动。因此基本上
[1,2,3,4]
变成
[2,3,4,1]
。你试图找到
k
是它移动的数字。在那个例子中,它应该是1。如果是这样,下面是一个解决方案:

public static int RotationCheck(int[] numArray) {
    int smallest = Integer.MAX_VALUE;
    int k = 0;

    //Finding the smallest int
    for(int num: numArray) {
        if(smallest > num)
            smallest = num;
    }

    //Getting new index of smallest int
    for(int i=0;i<numArray.length;i++) {
        if(numArray[i] == smallest)
            k = numArray.length - i;
    }

    return k;
}
publicstaticint-RotationCheck(int[]numArray){
int最小值=整数最大值;
int k=0;
//求最小整数
for(int num:numaray){
如果(最小值>数值)
最小=num;
}
//获取最小int的新索引

对于(int i=0;i您的输入、当前输出和预期输出是什么?第一次迭代返回s的可能性很高,为0。您可能需要重新考虑您的算法,它看起来类似于二进制搜索,而线性搜索可能更简单、更直接