美文网首页
每日一道算法题 - 旋转数组

每日一道算法题 - 旋转数组

作者: 辉_ace | 来源:发表于2021-12-11 20:06 被阅读0次

    问题

    给定一个数组nums,将数组中的元素【向右】旋转k个位置。

    思路

    每个元素向右旋转,相当于要确定当前元素的新的位置,位置计算:(当前元素下标+要旋转多少个位置)% 数组长度。

    实现

    public class ReverseArray {
    
        public static void main(String[] args) {
    
            int[] nums = new int[]{1,2,3,4,5,6,7};
            int k = 3;
            int[] result = rotate(nums,k);
            System.out.println(Arrays.toString(result));
        }
    
        private static int[] rotate(int[] nums, int k) {
            //获取数组长度
            int length = nums.length;
            //定义一个新数组
            int[] result = new int[length];
    
            //遍历原数组,将原数组值+k ,%length确定元素在新数组中的位置,并赋值
            for (int i=0;i<length;i++){
                 result[(i+k)%length]= nums[i];
            }
            return result;
        }
    }
    

    相关文章

      网友评论

          本文标题:每日一道算法题 - 旋转数组

          本文链接:https://www.haomeiwen.com/subject/tvqlfrtx.html