面试经典 150 题

文章目录

6、轮转数组

1、描述

给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。

示例 1:

输入: nums = 1,2,3,4,5,6,7, k = 3

输出: 5,6,7,1,2,3,4

解释:

向右轮转 1 步: 7,1,2,3,4,5,6

向右轮转 2 步: 6,7,1,2,3,4,5

向右轮转 3 步: 5,6,7,1,2,3,4
2、关键字

数组向后轮转变换
3、思路

先用k对n取模

思路一:使用辅助数组,时间复杂度O(N),空间复杂度O(N)

思路二:发现规律:先把整个数组逆置,之后把前k个元素逆置,之后把后边n- k个元素逆置
4、notes

多练
6、code

cpp 复制代码
class Solution {
public:
   void reverse(vector<int>& nums, int i, int j) {
        while(i < j) {
            int tem = nums[i];
            nums[i] = nums[j];
            nums[j] = tem;     
            i++;
            j--;
        }
   }
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        k %= n ;
        reverse(nums, 0, n - 1); // 整个数组逆置
        reverse(nums, 0,  k - 1); // 逆置前边的k个,
        reverse(nums, k, n - 1); // 逆置后边的n - k个
    }
};
相关推荐
hqzing3 分钟前
鸿蒙 PC 底层开发技术详解(七):二进制自签名算法的实现
算法·华为·harmonyos
AI科技星12 分钟前
超复数全域经济周期场与信息谱场——金融与密码学底层理论重构《0·1·∞三元一体全域超复数统一场论》系列全集(六一字不漏完整合订终版)
人工智能·算法·金融·密码学·拓扑学·乖乖数学·全域数学
AI科技星30 分钟前
《01无穷全域信息场论:算子G与宇宙本体高维完备公理大典》
人工智能·python·算法·金融·乖乖数学·全域数学
Tim_1044 分钟前
【C++】013、空类占多少字节?
算法
Ricky_Theseus1 小时前
并查集:连通性问题
算法
qzhqbb1 小时前
字节面试分享复盘
面试·职场和发展
Tairitsu_H1 小时前
[LC优选算法#18] 前缀和 | 除⾃⾝以外数组的乘积 | 和为K的⼦数组 | 和可被K整除的⼦数组
算法·前缀和·哈希算法
凯瑟琳.奥古斯特2 小时前
力扣1008:前序重建BST
开发语言·c++·算法·leetcode·职场和发展
qq_383189622 小时前
07-运放运用电路-程控增益放大器
算法
aqiu1111113 小时前
【算法日记 13】LeetCode 49. 字母异位词分组:哈希表的进阶“降维打击”
算法·leetcode·散列表