面试经典算法150题系列-数组/字符串操作之轮转数组
序言:今天是算法系列的第六题啦,无需多说,上题!
轮转数组
给定一个整数数组 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:
输入:nums = [-1,-100,3,99], k = 2 输出:[3,99,-1,-100] 解释: 向右轮转 1 步: [99,-1,-100,3] 向右轮转 2 步: [3,99,-1,-100]
解题思路:
原地旋转
- 首先,反转整个数组。
- 然后,反转数组的前
k个元素。 - 最后,反转数组的剩余元素。
实现过程:以nums = [1,2,3,4,5,6,7], k = 3为例
第一步反转整个数组:7 , 6 , 5 , 4 , 3 , 2 , 1
第二步反转数组的前k个元素:5,6,7,4,3,2,1
第三步反转数组的剩余元素:5,6,7, 1 , 2 , 3 , 4
本题难点在于想到构造辅助函数实现反转,朋友们有想到这个思路吗?
实现代码:
public class Solution {// 这是Solution类的声明,它包含了rotate方法的定义。public void rotate(int[] nums, int k) {// rotate方法接受两个参数:一个整数数组nums和一个整数k,表示向右轮转的位数。int n = nums.length;// 获取数组的长度。k = k % n; // 如果k大于数组长度,取余数以优化// 通过取k和数组长度n的余数,可以确保即使k很大,也只会执行必要的轮转次数。if (n == 0 || k == 0) return; // 如果数组为空或k为0,无需旋转// 检查数组是否为空或者k是否为0,如果是,则直接返回,因为没有旋转的必要。// 调用reverse方法反转整个数组。reverse(nums, 0, n - 1);// 调用reverse方法反转数组的前k个元素。reverse(nums, 0, k - 1);// 再次调用reverse方法反转k个元素后的剩余部分。reverse(nums, k, n - 1);}// 这是一个辅助方法,用于反转数组中从start到end索引的元素。private void reverse(int[] nums, int start, int end) {while (start < end) {// 交换start和end索引处的元素。int temp = nums[start];nums[start] = nums[end];nums[end] = temp;// 移动start和end的索引,向中间靠拢。start++;end--;}}
相关文章:
面试经典算法150题系列-数组/字符串操作之轮转数组
序言:今天是算法系列的第六题啦,无需多说,上题! 轮转数组 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3…...
苹果手机怎么录屏?一键操作,轻松掌握录屏技巧
最近新换了一台苹果手机,但苹果手机和安卓手机有挺多不相同的地方,就比如苹果手机怎么录屏我一直都没找到,有没有经常使用苹果手机的朋友可以帮帮我?先谢谢大家啦!” 苹果手机作为全球领先的智能手机品牌,…...
[Vue3] - 3 数据响应式
前言 在前端开发过程中,最为注重的就是数据的即时性和响应。但随着技术的发展vue2.0的数据响应方式,不能响应属性的新增和删除、以及通过数组下标修改界面不会自动更新等弊端逐渐显露。vue3.0为开发者提供了更为便捷的数据响应方式,接下来就让我们一起去探索一下。 目标 1 …...
【话题】“八股文”在实际工作中是助力、阻力还是空谈?
目录 前言 方向一:“八股文”对招聘过程的影响 方向二:“八股文”在日常工作中的实用价值 方向三:改进“八股文”学习和评估的方法 前言 在当今快速发展的信息技术领域,程序员的角色日益重要。随着技术的不断进步,…...
Windows 10 安装 WSL、安装 Go 以及配置环境变量的详细教程
安装 WSL 和 Ubuntu 启用 WSL 功能 以管理员身份打开 PowerShell。 运行以下命令以启用 WSL 功能: dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart启用虚拟机平台 继续在管理员 PowerShell 中运行以下命令以启…...
论文阅读:基于生物神经元的模拟游戏世界感知与学习
论文内容概述 AI要90分钟学会的游戏,人脑细胞竟在5分钟搞定了。Cell在2022年的研究中,使用80万体外神经元细胞(DishBrain)竟然学会玩70年代经典街机游戏Pong! 论文链接:In vitro neurons learn and exhibit sentience when emb…...
理解最先进模型的起点GPT-2 源码 配置的解释
理解最先进模型的起点GPT-2 源码 配置的解释 flyfish 为训练GPT模型设置和管理配置参数、日志记录以及实验的可重复性 理解最先进模型的起点GPT-2 理论知识 理解最先进模型的起点GPT-2 源码 注释 模型部分(from mingpt.model) utils.py import os import sys import json im…...
C++11 可变参数模板
C11的新特性可变参数模板能够创建可以接受可变参数的函数模板和类模板,相比C98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧&#x…...
项目实战——外挂开发(30小时精通C++和外挂实战)
项目实战——外挂开发(30小时精通C和外挂实战) 外挂开发1-监控游戏外挂开发2-秒杀僵尸外挂开发3-阳光地址分析外挂开发4-模拟阳光外挂开发5-无限阳光 外挂开发1-监控游戏 外挂的本质 有两种方式 1,修改内存中的数据 2,更改内存中…...
【人工智能专栏】Constructive损失解析
Constructive Loss 相比较于 MSE Loss \text{MSE Loss} MSE Loss 和 MAE Loss \text{MAE Loss} MAE Loss 直接将结果与目标数值比较的做法,使用 Constru...
PHP经销商订货管理系统小程序源码
经销商订货管理系统:重塑供应链效率的利器 🚀 开篇:解锁供应链管理的新纪元 在竞争激烈的商业环境中,经销商作为供应链的关键一环,其订货效率直接影响到整个供应链的流畅度和响应速度。传统的订货方式往往繁琐、易出…...
【网络世界】HTTPS协议
目录 🌈前言🌈 📁 HTTP缺陷 📁 HTTPS 📂 概念 📂 加密 📂 加密方式 📁 中间人攻击 📁 CA机构和证书 📂 数据摘要(数据指纹) &…...
根据空域图信息构造飞机航线图以及飞行轨迹模拟matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 航路网络建模 4.2 航线图构建 4.3 飞行轨迹模拟的具体步骤 5.完整程序 1.程序功能描述 空域图是指航空领域中的一种图形表示方式,它涵盖了空中交通管理所需要的各种信息&a…...
llama-factory 系列教程 (五),SFT 微调后的模型,结合langchain进行推理
背景 微调了一个 glm4-9B的大模型。微调后得到Lora权重,部署成vllm 的API,然后通过langchain接入完成相关任务的推理。 关于SFT 微调模型的部分就不做介绍了,大家可以参考前面的文章,将自己的数据集 在 Llamafactory 的 dataset…...
hive 中编写生成连续月sql
记录一下 sql 编写生成从一个确定的起始月份到当前月份的连续月份序列 SELECT substr(add_months(table1.start_dt,table2.pos),1,4) AS INDICT_YEAR,substr(add_months(table1.start_dt,table2.pos),1,7) AS INDICT_MON FROM (SELECT 2024-01-01 AS start_dt,substr(CURRE…...
前端开发实用的网站合集
文章目录 一、技能提升篇vueuseJavaScript中文网JavaScript.infoRxJsWeb安全学习书栈网码农之家 二、UI篇iconfont:阿里巴巴矢量图标库IconPark3dicons美叶UndrawError 404摹克 三、CSS篇You-need-to-know-cssCSS TricksAnimate.cssCSS ScanCSS Filter 四、颜色篇中…...
蓄势赋能 数智化转型掌舵人百望云杨正道荣膺“先锋人物”
2024年,在数据与智能的双涡轮驱动下,我们迎来了一个以智能科技为核心的新质生产力大爆发时代。在数智化浪潮的推动下,全球企业正站在转型升级的十字路口。在这个充满变革的时代,企业转型升级的道路充满挑战,但也孕育着…...
(七)前端javascript中的函数式编程技巧2
函数式编程范式的技巧 迭代算法-可以替代for in let count 10;while (count--) {console.log(count); }斐波拉契的实现 function fabci(n) {console.log("🚀 ~ fabci ~ n:", n);if (n 1 || n 2) {return 1;}return fabci(n - 1) fabci(n - 2);}cons…...
LeetCode热题 翻转二叉树、二叉树最大深度、二叉树中序遍历
目录 一、翻转二叉树 1.1 题目链接 1.2 题目描述 1.3 解题思路 二、二叉树最大深度 2.1 题目链接 2.2 题目描述 2.3 解题思路 三、二叉树中序遍历 3.1 题目链接 3.2 题目描述 3.3 解题思路 一、翻转二叉树 1.1 题目链接 翻转二叉树 1.2 题目描述 1.3 解题思路 根…...
DNS查询服务器的基本流程以及https的加密过程
DNS查询服务器的基本流程,能画出图更好,并说明为什么DNS查询为什么不直接从单一服务器查询ip,而是要经过多次查询,多次查询不会增加开销么(即DNS多级查询的优点)? 用户发起请求:用户…...
【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
【配置 YOLOX 用于按目录分类的图片数据集】
现在的图标点选越来越多,如何一步解决,采用 YOLOX 目标检测模式则可以轻松解决 要在 YOLOX 中使用按目录分类的图片数据集(每个目录代表一个类别,目录下是该类别的所有图片),你需要进行以下配置步骤&#x…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
