当前位置: 首页 > news >正文

C++速通LeetCode中等第10题-轮转数组(四种方法)

方法一:巧用deque双向队列容器

class Solution {
public:void rotate(vector<int>& nums, int k) {deque<int> q;int tmp;if(nums.size() > 1){for(auto num:nums) q.push_back(num);for(int i = 0;i < k;i++){tmp = q.back();q.pop_back();q.push_front(tmp);}for(int j = 0;j < nums.size();j++){nums[j] = q[j];} }}
};

方法二: 先在vector尾部添加,后删除头部(超出时间限制)

class Solution {
public:void rotate(vector<int>& nums, int k) {while(k >= nums.size()) k -= nums.size();k = nums.size() - k;for(int i = 0;i < k; i++){nums.push_back(nums[i]);}int j = 0;for(auto it = nums.begin();j < k;j++){it = nums.erase(it);}}
};

方法三: 额外vector存放数组

class Solution {
public:void rotate(vector<int>& nums, int k) {int n = nums.size();vector<int> newArr(n);for (int i = 0; i < n; ++i) {newArr[(i + k) % n] = nums[i];}nums.assign(newArr.begin(), newArr.end());}
};

方法四:翻转(空间复杂度O(1))

class Solution {
public:void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start += 1;end -= 1;}}void rotate(vector<int>& nums, int k) {k %= nums.size();reverse(nums, 0, nums.size() - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.size() - 1);}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 学生党头戴式耳机哪个品牌音质好?四款音质卓越性价比极高推荐
  • 【WebLogic】WebLogic 11g 控制台模式下的集群创建(一)
  • flink 为啥使用MemorySegment 来管理内存
  • 思维可视化:2024年四大创新思维导图软件排行榜!
  • 查看和升级pytorch到指定版本
  • dbt snapshot命令及应用示例
  • 网络安全-jsp绕过
  • 汽车总线详解
  • 计算器软件设计与实现
  • 1.4 MySql配置文件
  • uniapp js判断key是否在json中?
  • [LLM 学习笔记] Transformer 基础
  • [3]Opengl ES着色器
  • 【数据库选择】选择合适的数据库(MongoDB、PostgreSQL、Couchbase)以支持复杂 JSON 数据的增删改查
  • spring springboot 日志框架
  • JS 中的深拷贝与浅拷贝
  • 《Javascript数据结构和算法》笔记-「字典和散列表」
  • 【node学习】协程
  • 2017届校招提前批面试回顾
  • Apache的基本使用
  • Cookie 在前端中的实践
  • ECMAScript入门(七)--Module语法
  • HashMap剖析之内部结构
  • iOS编译提示和导航提示
  • IOS评论框不贴底(ios12新bug)
  • Magento 1.x 中文订单打印乱码
  • Mysql5.6主从复制
  • Netty源码解析1-Buffer
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Vim 折腾记
  • Vue2 SSR 的优化之旅
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 码农张的Bug人生 - 初来乍到
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 手写一个CommonJS打包工具(一)
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 我的zsh配置, 2019最新方案
  • 【云吞铺子】性能抖动剖析(二)
  • 大数据全解:定义、价值及挑战
  • 回归生活:清理微信公众号
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​字​节​一​面​
  • ‌[AI问答] Auto-sklearn‌ 与 scikit-learn 区别
  • #每日一题合集#牛客JZ23-JZ33
  • $.proxy和$.extend
  • (07)Hive——窗口函数详解
  • (11)MSP430F5529 定时器B
  • (22)C#传智:复习,多态虚方法抽象类接口,静态类,String与StringBuilder,集合泛型List与Dictionary,文件类,结构与类的区别
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (PADS学习)第二章:原理图绘制 第一部分
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二)linux使用docker容器运行mysql
  • (附源码)ssm高校升本考试管理系统 毕业设计 201631
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (七)glDrawArry绘制