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);
}