import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型一维数组
     */
  /**
  三次翻转即可做到向左移动牛群
  */
    public int[] rotateCows (int[] nums, int k) {
	  // k要进行取余,因为如果k>数组长度,就是移动了一圈之后向左k%num.length
        k %= nums.length;
	  // 先反转整体
        reverse(nums, 0, nums.length - 1);
	  // 再反转目标k的左边
        reverse(nums, 0, k - 1);
	  // 再反转目标k的右边
        reverse(nums, k, nums.length - 1);
        return nums;
    }
  // 翻转的函数,没啥好说的,字符替换而已
    public void reverse(int[] nums, int start, int end) {
        while (start < end) {
            int temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start += 1;
            end -= 1;
        }
    }
}

本题知识点分析:

1.字符串翻转

2.如何才能向左移动字符,并在原地进行修改

本题解题思路分析:

1.先翻转整体

2.再翻转开头到k-1个字符串

3.然后翻转k+1个到结尾的字符串

4.最后返回字符串即可

关键点:注意K要取余,不然会做多余的操作。

本题使用编程语言:Java

如果你觉得本题对您有帮助的话,可以点个赞!