题解 | #向左移动牛群#

向左移动牛群

https://www.nowcoder.com/practice/e70fc604c3684ce294e6af5e97feff04

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param nums int整型一维数组
     * @param k int整型
     * @return int整型一维数组
     */
    public int[] rotateCows (int[] nums, int k) {
        // write code here 
        // 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

全部评论

相关推荐

xwqlikepsl:感觉很厉害啊,慢慢找
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务