跳到主要内容

189.轮转数组

链接:189.轮转数组
难度:Medium
标签:数组、数学、双指针
简介:给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。

题解 1 - typescript

  • 编辑时间:2021-01-08
  • 执行用时:140ms
  • 内存消耗:41MB
  • 编程语言:typescript
  • 解法介绍:尾部弹出,插入头部。
function rotate(nums: number[], k: number): void {
if (nums.length === 0) return;
while (k-- !== 0) {
nums.unshift(nums.pop()!);
}
}

题解 2 - typescript

  • 编辑时间:2021-01-08
  • 执行用时:96ms
  • 内存消耗:41MB
  • 编程语言:typescript
  • 解法介绍:翻转三次数组。
function rotate(nums: number[], k: number): void {
const len = nums.length;
if (len === 0) return;
const reverse = (start: number, end: number) => {
while (start < end) {
const temp = nums[start];
nums[start++] = nums[end];
nums[end--] = temp;
}
};
k %= len;
reverse(0, len - 1);
reverse(0, k - 1);
reverse(k, len - 1);
}