Rotate Array

本文详细解读了旋转数组的实现代码,并通过调整优化,实现了时间复杂度为O(n),空间复杂度为O(n)的高效解决方案。通过具体实例展示如何在不同场景下灵活运用旋转数组操作。
<gs id="79dc6257-769a-42f4-81f6-b33ab08ff9a5" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">class</gs> Solution <gs id="05170077-7bfc-4351-b8a4-fa2515562794" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">{
</gs>public:
    void <gs id="ac5838b1-a61a-4aee-82f4-fdd288dfc507" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">rotate</gs><gs id="a17fda3f-5eb1-43e9-98a9-0cfec7befc3a" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">(</gs>vector<<gs id="046abc55-372e-44ff-a6f9-c9e11a7e6a3a" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs>>& <gs id="58754dbb-13ca-4dfc-bc17-ab61a01814a6" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs>, <gs id="d33ff531-d83e-424b-8308-8f013ff6987f" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs> k) <gs id="ffb46127-ae00-4fbe-9f5a-58c825ff3aa7" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">{
        </gs><gs id="7ff00198-7bc4-4e89-85a0-2ce6babf5066" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs> n = <gs id="5bde9243-1bbf-43bb-a9d1-d04f0520ca8c" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="8865a852-2907-4ba4-9984-a6c5105a27d0" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">.</gs>size<gs id="a6290452-ae3c-470c-8a4a-6ea7c12985cb" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">(</gs>);
        if (<gs id="0dc241d9-b716-4bf7-bba0-00eacf229b7b" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">k > n</gs>) k = k % n;
        if (n == k || k < 1) return;

        vector<<gs id="dc4d2b6a-7874-4b68-afe4-aa62ed5879c9" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs>> temp<gs id="0d00a42a-f117-4e74-9011-810c2ed25333" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">(</gs><gs id="7babb397-0ae2-48c7-9063-3b422632fba3" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="eb194a4a-5c57-4aca-94d3-c055655cf215" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">.</gs><gs id="c2e8f797-380b-44d7-a707-ee21a928609e" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">begin</gs><gs id="615e1331-58e2-41a9-8a30-8ab0a5aaefac" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">(</gs>), <gs id="3844ea73-8aba-47bd-a1ac-4080eba3d6d5" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="f9c18198-3aca-4c3a-a7ce-97c57bf90fc7" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">.</gs><gs id="95a965d2-e598-45b4-8ec6-163c035aef8a" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">begin</gs><gs id="7e5e43a1-363c-4cb4-9124-1fc9950ebccd" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">(</gs>) + n - k);
    
        for (<gs id="ed62b337-063d-492b-ad8c-25c619114f01" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs> <gs id="1eaa8f00-4bdf-4a42-a9f1-44106bab2675" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs> = 0; <gs id="33bbaa53-b3a4-40d2-abb9-9c232065535c" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs> < k; i++) <gs id="332c2524-93e8-40ee-ae7c-c5729720f3d2" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">{
            </gs><gs id="c71bee51-118a-47c5-889f-9809c87aaee4" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="b4cca93c-fc0c-4be3-892c-f11057990db0" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">[</gs><gs id="43b5f029-f16d-4a8b-9c68-7f6f41e68184" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs>] = <gs id="c7724ef4-6b07-4262-8fcc-8860777e67ca" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="c5947857-f7cd-4c65-b51a-c4e65e0753cb" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">[</gs>n - k + <gs id="e7f7d96b-74b1-4c83-8141-106e80ea91dd" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs>];<gs id="8911ab8a-c5b8-4797-893d-f79de363da21" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">
        }</gs>
        for (<gs id="1e99f4e0-655b-470d-9eff-54345355201c" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">int</gs> <gs id="5ee78fb7-1a06-4ef7-a400-3142abaf9028" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs> = k, j = 0; <gs id="599bd548-6b40-4b30-937b-64ff41fc52eb" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs> < n; i++, j++) <gs id="48706289-7deb-4782-8350-0a3b94a37e8e" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">{
            </gs><gs id="678437c6-ad1c-41f6-b5f8-a976a5efc97a" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">nums</gs><gs id="4f9cfbf7-3f0c-47fa-bba1-e53fd12c08ca" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">[</gs><gs id="737dfb44-9e94-4afb-b3fe-436f7a710476" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">i</gs>] = temp<gs id="25009f8d-add6-4453-a5d3-d77a2c3ec4c5" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">[</gs>j];<gs id="c8c7112d-0a08-4c40-89f1-7744b909b7f0" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">
        }</gs><gs id="457f0602-7a5c-4dd6-b843-ba9782d6a710" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">
    }</gs><gs id="de806a80-2d5a-457e-a6e5-29fbbda86e11" ginger_software_uiphraseguid="c7367d9a-3109-4c9f-9328-f3958ab03922" class="GINGER_SOFTWARE_mark">
}</gs>;

Time O (n), space O (n);


class Solution {
public:
    void rotate(vector<int>& nums, int k) {
        int n = nums.size();
        if (k > n) k = k % n;
        if (n == k || k < 1) return;

        reverse(nums.begin(), nums.begin()+n-k);
        reverse(nums.begin()+n-k, nums.end());
        reverse(nums.begin(), nums.end());
    }
};
Time O(n), space O(1)

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值