力扣练习之旋转数组

我爱海鲸 2023-06-23 21:28:39 初级算法

简介初级算法、java、go

原题出处:https://leetcode.cn/leetbook/read/top-interview-questions-easy/x2skh7/

解法一(java):

class Solution {
    public void rotate(int[] nums, int k) {
int length = nums.length;
		if (length < k ) {
			k = k % length;
		}
		int[] left = new int[k];
		int[] right = new int[length - k];
		for (int i = 0; i < length; i++) {
			if (i < right.length) {
				right[i] = nums[i];
			} else {
				left[i-right.length] = nums[i];
			}
		}
		for (int i = 0 ; i < left.length ; i++) {
			nums[i] = left[i];
		}
		for (int i = 0 ; i < right.length ; i++) {
			nums[left.length+i] = right[i];
		}
    }
}

思路:将数组拆分为两部分,按平移的数据,将左边和右边的数据分离出来,在将两边的数据合并到原来的数据中即可

2023-06-23 start

解法二(go):

func rotate(nums []int, k int)  {
    length := len(nums)
    if length < k {
        k = k % length
    }
    left := make([]int,k)
    right := make([]int,length-k)
    for i := 0 ; i < length; i++ {
        if i < len(right) {
            right[i] = nums[i]
        } else {
            left[i-len(right)] = nums[i]
        }
    }
    for i := 0; i < len(left); i++ {
        nums[i] = left[i]
    }
    for i := 0; i< len(right); i++ {
        nums[i+len(left)] = right[i]
    }
}

思路:(同解法一)将数组拆分为两部分,按平移的数据,将左边和右边的数据分离出来,在将两边的数据合并到原来的数据中即可

end

你好:我的2025