shuti

简介: 11

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

一、题目描述:

给你一个数组,将数组中的元素向右轮转 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:

输入:nums = [-1,-100,3,99], k = 2
输出:[3,99,-1,-100]
解释: 
向右轮转 1 步: [99,-1,-100,3]
向右轮转 2 步: [3,99,-1,-100]
 

提示:

1 <= nums.length <= 105
-231 <= nums[i] <= 231 - 1
0 <= k <= 105
 

进阶:

尽可能想出更多的解决方案,至少有 三种 不同的方法可以解决这个问题。
你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗?

二、思路分析:

  • 根据示例1思考,暴力解法也可以实现,循环遍历的方式,将最后k位元素,放到前k位,前面的元素nums[i] 移动到i+k位置。 得出 news[i] = news[i] = nums[(i+n-k)%n];
  • 首次提交出现错误java.lang.ArrayIndexOutOfBoundsException: Index -1 out of bounds for length 2,发现代码存在问题,当k>n时,会导致i+n-k 出现负值的情况,当k 是n的整数倍时,数组不发生变化,也就是说我们只要考虑k%n,增加条件 k=k%n; 让k与n求余,保证不会出现下标位负值的情况,提交代码通过

三、AC 代码:

class Solution {
  public void rotate(int[] nums, int k) {
        int n = nums.length;
        if(k>n){
            k=k%n;
        }
        int[] news = Arrays.copyOf(nums,n);
        for (int i = 0; i < n; i++) {
            nums[i] = news[(i+n-k)%n];
        }
    }
}

四、总结:

 按照20天算法刷题计划的分类来看,本题归类为双指针的题型,但是没想到改怎么使用指针的方式优化算法,看了看官方的解法,发现这题的解法还是很多的,进阶任务还是完成不了的,暂时只能想到一种解法,慢慢提高自己的算法知识吧。
相关文章
单笔转账报错PAYEE_NOT_EXIST(收款账户不存在)-排查方案
报错原因 接口中用户账户参数设置存在问题,导致显示用户收款账户不存在。 排查方案 1、检查payee_account, payee_type是否匹配,如匹配,请检查payee_account是否存在; (1)payee_type设置要求 ALIPAY_USERID:支付宝账号对应的支付宝唯一用户号。
4153 12
|
机器学习/深度学习 人工智能 安全
《昇腾芯片:鸿蒙NEXT人工智能算力体系的核心驱动力》
在人工智能快速发展的背景下,鸿蒙NEXT操作系统与昇腾芯片的结合带来了重大变革。昇腾芯片凭借卓越的计算性能(如昇腾910的320 TFLOPS半精度算力),加速模型训练和推理,缩短训练时间,提升效率。它与鸿蒙NEXT深度融合,实现高效协同,支持多场景应用,从云端到终端提供强大算力,并通过星盾安全架构保障数据安全。这一组合为智能生态的发展奠定了坚实基础。
731 14
|
12月前
|
算法 数据安全/隐私保护
基于DVB-T的COFDM+16QAM+LDPC图传通信系统matlab仿真,包括载波同步,定时同步,信道估计
### 简介 本项目基于DVB-T标准,实现COFDM+16QAM+LDPC码通信链路的MATLAB仿真。通过COFDM技术将数据分成多个子载波并行传输,结合16QAM调制和LDPC编码提高传输效率和可靠性。系统包括载波同步、定时同步和信道估计模块,确保信号的准确接收与解调。MATLAB 2022a仿真结果显示了良好的性能,完整代码无水印。仿真操作步骤配有视频教程,便于用户理解和使用。 核心程序涵盖导频插入、载波频率同步、信道估计及LDPC解码等关键环节。仿真结果展示了系统的误码率性能,并保存为R1.mat文件。
364 76
|
存储 安全 数据可视化
用Python实现简单的任务自动化
本文介绍如何使用Python实现任务自动化,提高效率和准确性。通过三个实用案例展示:1. 使用`smtplib`和`schedule`库自动发送邮件提醒;2. 利用`shutil`和`os`库自动备份文件;3. 借助`requests`库自动下载网页内容。每个案例包含详细代码和解释,并附带注意事项。掌握这些技能有助于个人和企业优化流程、节约成本。
458 3
|
JavaScript 前端开发
基于SVG的js圆形菜单插件
这是一款基于SVG的js圆形菜单插件。该js圆形菜单插件可以生成漂亮的圆形菜单效果,支持二级菜单,支持使用鼠标滚动切换菜单
244 16
|
机器学习/深度学习 人工智能 算法
探索人工智能与大数据的融合之道####
— 本文旨在探讨人工智能(AI)与大数据如何协同工作,以推动技术创新和产业升级。通过分析二者的基本概念、核心技术及应用场景,揭示它们相互促进的内在机制,并展望未来发展趋势。文章指出,AI提供了智能化处理数据的能力,而大数据则为AI提供了海量的训练资源,两者结合将开启无限可能。 ####
|
域名解析 网络协议 安全
dns解析问题之某个地域访问不到如何解决
DNS解析是指将人类可读的域名转换成机器可读的IP地址的过程,它是互联网访问中不可或缺的一环;本合集将介绍DNS解析的机制、类型和相关问题的解决策略,以确保域名解析的准确性和高效性。
647 4
dns解析问题之某个地域访问不到如何解决
|
运维 数据可视化 IDE
低代码开发平台测评
本次测评将从三个方面对低代码产品进行全面评估。首先,我将进行详细的功能测试,以确保产品能够满足用户的需求。其次,我将结合实际应用场景,评估产品的实用性和可靠性。最后,我将提出一些建议和期望,以帮助魔笔产品不断改进和发展。通过本次测评,我希望能够为用户提供全面的参考信息,帮助他们做出明智的决策。
492 40
|
数据采集 供应链 监控
5 天学会阿里云 RPA:电商行业应用
在当今数字化的商业环境中,电商行业迅速发展。为了在激烈的市场竞争中脱颖而出,电商企业不断寻求提高运营效率和提供优质客户体验的方法。阿里云 RPA(机器人流程自动化)的出现为电商行业带来了全新的解决方案。
|
算法 数据可视化 JavaScript
AntV G6配置布局
AntV G6配置布局
522 0