eng
competition

Text Practice Mode

Rotate Array inplace C#

created Sep 5th 2018, 14:32 by Gregory L


3


Rating

86 words
36 completed
00:00
public static void Rotate(int[] nums, int k)
        {
            int size = nums.Length;
            if (size <= 1 || k <= 0)
            {
                return;
            }
            int shift = k % size;
            var dict = new Dictionary<int, int>();
            for (int i = 0; i < size; i++)
            {
                int to = (i + shift) % size;
                if (i < to)
                {
                    dict.Add(i, nums[i]);
                }
                int from = (i - shift + size) % size;
                if (!dict.TryGetValue(from, out var fromVal))
                {
                    fromVal = nums[from];
                }
                nums[i] = fromVal;
            }
        }

saving score / loading statistics ...