Хорошо, тогда это очень просто logi c, которое вы можете реализовать самостоятельно. Посмотрите на следующий пример
void main() {
List<int> numbers = [1,2,3];
numbers = shiftingRight(numbers, 1);
print(numbers);
numbers = shiftingLeft(numbers, -1);
print(numbers);
//Without extra space
rotateLeft(numbers, 2);
print(numbers);
}
leftRotatebyOne(List<int> nums) {
int first = nums[0];
int i;
for (i = 0; i < nums.length - 1; i++)
nums[i] = nums[i+1];
nums[i] = first;
}
rotateLeft(List<int> nums, int offset) {
for (int i = 0; i < offset; i++) {
leftRotatebyOne(nums);
}
}
List<int> shiftingRight(List<int> nums, int offset) {
int length = nums.length;
List<int> temp = List.from(nums);
for (int i = 0; i < nums.length; i++) {
temp[i] = nums[(i + offset) % length];
}
return temp;
}
List<int> shiftingLeft(List<int> nums, int offset) {
int length = nums.length;
return shiftingRight(nums, length + offset);
}
Вывод
[2, 3, 1]
[1, 2, 3]
[3, 1, 2] //Without extra space
Да, вам нужен некоторый диапазон проверки массива, но идея очень проста