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

打卡力扣题目九

#左耳听风 ARST 打卡活动重启#

目录

 一、问题

 二、解题方法一

 三、解题方法二

四、两种方法的区别


关于 ARTS 的释义 —— 每周完成一个 ARTS:
● Algorithm: 每周至少做一个 LeetCode 的算法题
● Review: 阅读并点评至少一篇英文技术文章
● Tips: 学习至少一个技术技巧
● Share: 分享一篇有观点和思考的技术文章

希望通过此次活动能聚集一波热爱技术的人,延续好奇、探索、实践、分享的精神。
 


 一、问题

给定一个整数数组 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]

 二、解题方法一

class Solution:def rotate(self, nums: List[int], k: int) -> None:n = len(nums)k %= nnums.extend(nums[:k])nums[:k] = nums[-k:]

这段代码实现了一个函数 `rotate`,用于将给定的整数数组 `nums` 向右轮转 `k` 个位置。

函数的输入参数有两个:

- 一个整数数组 `nums`,表示需要进行旋转操作的数组。
- 一个非负整数 `k`,表示需要向右旋转的位置数。注意,这里的 `k` 取模 `n`(即 `k % n`),因为当 `k` 大于等于 `n` 时,只需要进行一次完整的旋转即可。

函数的主要思路是将数组分为两部分,前 `k` 个元素和剩余的元素,然后将这两部分分别拼接起来,得到旋转后的数组。具体实现过程如下:

1. 首先计算出数组的长度 `n`,以及对 `n` 取模的结果 `k % n`。这是因为当 `k` 大于等于 `n` 时,只需要进行一次完整的旋转即可。

2. 然后使用列表的 `extend()` 方法,在数组末尾添加前 `k` 个元素。这样就得到了一个新的数组,其中前 `k` 个元素为原数组的前半部分,剩余的元素为原数组的后半部分。

3. 最后使用列表切片的方式,将新数组中剩余的元素移动到前面,即可得到旋转后的数组。具体来说,我们可以将新数组中的第 `k` 个元素到最后一个元素取出,然后将其放到新数组的前半部分中对应的位置上。这样就可以完成整个旋转操作了。

总之,这段代码的时间复杂度为 O(n),空间复杂度为 O(1)。

 三、解题方法二

另一种解题方法是使用双指针法。具体来说,我们可以定义两个指针 `left` 和 `right`,分别指向数组的开头和结尾。然后进行以下操作:

1. 将 `left` 指针向右移动 `k` 个位置,直到它指向数组的第 `k` 个元素为止。
2. 将 `right` 指针向左移动 `k` 个位置,直到它指向数组的第 `n-k` 个元素为止。
3. 将 `left` 和 `right` 指针所指向的两个元素交换位置,即可完成旋转操作。

这种方法的时间复杂度为 O(n),空间复杂度为 O(1)。

 

def rotate(nums, k):n = len(nums)k %= n  # 对 n 取模,防止 k 大于等于 n 的情况left, right = 0, n - 1for _ in range(k):temp = nums[left]nums[left] = nums[right]nums[right] = templeft += 1right -= 1

四、两种方法的区别

两种方法的区别在于,单指针法只能找到一个满足条件的元素,而双指针法则可以在 O(n) 的时间复杂度内找到所有满足条件的元素。具体来说,单指针法从数组的开头开始遍历,如果找到了一个满足条件的元素,就返回该元素的位置;否则继续向后遍历,直到遍历完整个数组。而双指针法则从数组的两端开始遍历,每次移动一个指针,当两个指针相遇时,就将它们所指向的元素交换位置。这样就可以保证每个元素都被访问过一次。 

 

相关文章:

打卡力扣题目九

#左耳听风 ARST 打卡活动重启# 目录 一、问题 二、解题方法一 三、解题方法二 四、两种方法的区别 关于 ARTS 的释义 —— 每周完成一个 ARTS: ● Algorithm: 每周至少做一个 LeetCode 的算法题 ● Review: 阅读并点评至少一篇英文技术文章 ● Tips: 学习至少一个…...

Python零基础入门(九)——函数,类和对象

系列文章目录 个人简介:机电专业在读研究生,CSDN内容合伙人,博主个人首页 Python入门专栏:《Python入门》欢迎阅读,一起进步!🌟🌟🌟 码字不易,如果觉得文章不…...

在linux上面部署activemq

1、下载 网址:ActiveMQ 注意:新版本5.17起 要求jdk11, 5.16兼容jdk8, 所以,确保已经安装 java11 或以上的版本 这里安装较新版:5.18.2,已经安装了java17 如何安装jdk17,请详见我的另一篇文章:linux…...

mysql的sql语句优化方法面试题总结

mysql的sql语句优化方法面试题总结 不要写一些没有意义的查询,如需要生成一个空表结构: select col1,col2 into #t from t where 10 这类代码不会返回任何结果集,但是会消耗系统资源的,应改成这样: create table #t…...

小程序 获取用户头像、昵称、手机号的组件封装(最新版)

在父组件引入该组件 <!-- 授权信息 --><auth-mes showModal"{{showModal}}" idautnMes bind:onConfirm"onConfirm"></auth-mes> 子组件详细代码为: authMes.wxml <!-- components/authMes/authMes.wxml --> <van-popup show…...

【Linux】简易shell外壳的制作

#include <stdio.h> #include <unistd.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h>#define NUM 1024 #define SIZE 32 #define SEP " "// 保存完整的命令行字符串 char cmd_line…...

TenserRT(四)在 PYTORCH 中支持更多 ONNX 算子

第四章&#xff1a;在 PyTorch 中支持更多 ONNX 算子 — mmdeploy 0.12.0 文档 PyTorch扩充。 PyTorch转换成ONNX&#xff1a; PyTorch有实现。PyTorch可以转化成一个或者多个ONNX算子。ONNX有相应算子。 如果即没有PyTorch实现&#xff0c;且缺少PyTorch与ONNX的映射关系&…...

前端高级面试题-浏览器

1 事件机制 事件触发三阶段 document 往事件触发处传播&#xff0c;遇到注册的捕获事件会触发 传播到事件触发处时触发注册的事件 从事件触发处往 document 传播&#xff0c;遇到注册的冒泡事件会触发 事件触发⼀般来说会按照上⾯的顺序进⾏&#xff0c;但是也有特例&#x…...

Mongodb 多文档聚合操作处理方法三(聚合管道)

聚合 聚合操作处理多个文档并返回计算结果。您可以使用聚合操作来&#xff1a; 将多个文档中的值分组在一起。 对分组数据执行操作以返回单个结果。 分析数据随时间的变化。 要执行聚合操作&#xff0c;您可以使用&#xff1a; 聚合管道 单一目的聚合方法 Map-reduce 函…...

Zabbix分布式监控配置和使用

目录 1 Zabbix监控的配置流程2 添加主机组3 添加模板4 添加主机5 配置图形6 配置大屏7 新建监控项7.1 简介7.2 添加监控项7.3 查看数据7.4 图表 8 新建触发器8.1 概述8.2 添加触发器8.3 显示触发器状态 1 Zabbix监控的配置流程 在Zabbix-Web管理界面中添加一个主机&#xff0c;…...

XCTF_very_easy_sql

简单的进行sql注入测试后发现不简单尝试一下按照提示 结合这句提示应该是内部访问&#xff0c;所以采用的手段应该是ssrf顺便看看包 唯一值得关注的是set-cookie说回ssrf唯一能使用的方式应该是Gopher协议找到了一个POST的python脚本 import urllib.parsepayload ""…...

[React]useMemoizedFn和useCallback对比

useMemoizedFn文档地址&#xff1a;https://ahooks.js.org/zh-CN/hooks/use-memoized-fn hooks组件内什么时候会更新自定义函数 在 React 中&#xff0c;自定义的 Hooks 内部的函数在以下常见的几种情况下会被重新赋值&#xff0c;导致更新引用&#xff1a; 组件重新渲染&…...

计算机毕设 深度学习人体跌倒检测 -yolo 机器视觉 opencv python

文章目录 0 前言1.前言2.实现效果3.相关技术原理3.1卷积神经网络3.1YOLOV5简介3.2 YOLOv5s 模型算法流程和原理4.数据集处理3.1 数据标注简介3.2 数据保存 5.模型训练 6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题…...

完全背包

动态规划解题步骤 : 动态规划问题一般从三个步骤进行考虑。 步骤一:集合和集合的状态 所谓的集合&#xff0c;就是一些方案的集合。 用 g[i][j] 表示从前 i 种物品中进行选择&#xff0c;且总体积不大于 j 的各个选法获得的价值的集合。注意&#xff1a;g[i][j] 不是一个数…...

【软件测试】webdriver常用API演示(Java+IDEA+chrome浏览器)

1.元素定位方法 对象的定位应该是自动化测试的核心&#xff0c;要想操作一个对象&#xff0c;首先应该识别这个对象。一个对象就是一个人一样&#xff0c;他会有各种的特征&#xff08;属性&#xff09;&#xff0c;如比我们可以通过一个人的身份证号&#xff0c;姓名&#xf…...

Linux安装MySQL 8.1.0

MySQL是一个流行的开源关系型数据库管理系统&#xff0c;本教程将向您展示如何在Linux系统上安装MySQL 8.1.0版本。请按照以下步骤进行操作&#xff1a; 1. 下载MySQL安装包 首先&#xff0c;从MySQL官方网站或镜像站点下载MySQL 8.1.0的压缩包mysql-8.1.0-linux-glibc2.28-x…...

多线程面试相关的一些问题

面试题 1. 常见的锁策略相关的面试题 2. CAS相关的面试题 3. Synchronized 原理相关的面试题 4. Callable 接口相关的面试题 1. 常见的锁策略 乐观锁 vs 悲观锁 悲观锁: 总是假设最坏的情况&#xff0c;每次去拿数据的时候都认为别人会修改&#xff0c;所以每次在拿数据的时候都…...

【使用维纳滤波进行信号分离】基于维纳-霍普夫方程的信号分离或去噪维纳滤波器估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

Vue+axios如何解决跨域

1、为什么会产生跨域&#xff1f; 出于浏览器的同源策略限制。 同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;是浏览器的一种安全机…...

网络安全系统中的守护者:如何借助威胁情报 (TI) 提高安全性

在这篇哈巴尔网站上的推文中&#xff0c;我们将解释 TI 缩写背后的含义、为什么需要它、Positive Technologies 收集哪些网络威胁数据以及如何帮助企业预防网络威胁。我们将以四种情况为例&#xff0c;说明公司如何使用 PT Threat Intelligence Feeds 来发现恶意活动并预防攻击…...

实战应用:基于编译原理,利用快马AI构建你的首个代码压缩工具

实战应用&#xff1a;基于编译原理&#xff0c;利用快马AI构建你的首个代码压缩工具 最近在学习编译原理&#xff0c;发现这门看似高深的学科其实离我们日常开发很近。比如代码压缩工具&#xff0c;就是编译原理技术的典型应用场景。今天就用InsCode(快马)平台来快速实现一个简…...

《AI Money Hunter:智能财务侦探,你的理财新助手》

《AI Money Hunter&#xff1a;智能财务侦探&#xff0c;你的理财新助手》 【免费下载链接】aimoneyhunter ai副业赚钱大集合&#xff0c;教你如何利用ai做一些副业项目&#xff0c;赚取更多额外收益。The Ultimate Guide to Making Money with AI Side Hustles: Learn how to …...

手把手教你用Global Mapper搞定大范围遥感影像:从按县界裁剪到自动切片分发的完整流程

大范围遥感影像工程化处理实战&#xff1a;Global Mapper全流程解决方案 当面对覆盖全省的Sentinel-2影像时&#xff0c;大多数GIS工程师的第一反应可能是打开QGIS或ArcGIS Pro&#xff0c;配合GDAL命令行工具完成从裁剪到分发的全流程。但今天我要分享的是一条更高效的路径——…...

啪」的一声脆响,空气击穿时那道紫色电弧总能让人心头一紧。咱们今天用COMSOL做个好玩的——计算两根针尖电极间的击穿电压,看看电场怎么在金属尖角处「拧麻花

comsol放电电极击穿空气模拟&#xff0c;计算击穿间隙的电压&#xff0c;周围附近的电场老规矩&#xff0c;先画个直径10mm的球头圆柱电极&#xff0c;对面放个尖角曲率半径0.1mm的针电极&#xff0c;间隙留5mm。材料库选「空气」&#xff0c;但要注意击穿模型得用自定义的。物…...

HighwayEnv完全指南:10分钟快速上手自动驾驶强化学习环境

HighwayEnv完全指南&#xff1a;10分钟快速上手自动驾驶强化学习环境 【免费下载链接】HighwayEnv A minimalist environment for decision-making in autonomous driving 项目地址: https://gitcode.com/gh_mirrors/hi/HighwayEnv HighwayEnv是一个轻量级的自动驾驶决…...

Zotero Citation插件进阶使用指南:从安装到定制的全流程解决方案

Zotero Citation插件进阶使用指南&#xff1a;从安装到定制的全流程解决方案 【免费下载链接】zotero-citation Make Zoteros citation in Word easier and clearer. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-citation [痛点分析]&#xff1a;文献管理中的隐…...

关键词搜索和SEO优化有什么关系_常见的关键词搜索误区有哪些

<h2>关键词搜索和SEO优化有什么关系</h2> <p>在当前数字化时代&#xff0c;网站流量的获取和保持已成为每一个企业和个人的重要目标。在这其中&#xff0c;关键词搜索和SEO优化是两个密不可分的环节。它们之间的关系不仅丰富了我们的网站内容&#xff0c;还帮…...

Qwen3.5-35B-A3B-AWQ-4bit企业应用:HR招聘简历图识别+关键资质自动核验系统

Qwen3.5-35B-A3B-AWQ-4bit企业应用&#xff1a;HR招聘简历图识别关键资质自动核验系统 1. 企业招聘场景的痛点分析 在传统HR招聘流程中&#xff0c;简历筛选和资质核验是最耗费人力的环节之一。每天面对堆积如山的纸质简历和PDF文件&#xff0c;HR需要&#xff1a; 手动翻阅…...

从大疆NAZA换到匿名P2飞控:一个DIY玩家的真实体验与参数调试避坑指南

从大疆NAZA到匿名P2飞控&#xff1a;一位DIY玩家的深度迁移指南 当我的F450机架在狭小卧室里显得笨拙不堪时&#xff0c;我意识到需要一次彻底的"瘦身计划"。这不是简单的机架更换&#xff0c;而是一次从商业飞控到开源系统的完整迁移——将大疆NAZA积累的经验移植到…...

RPA+AI市场进入精细化竞争阶段,企业选型逻辑正在改变

IDC最新数据显示&#xff0c;中国RPAAI解决方案市场规模已达31.5亿元&#xff0c;竞争格局呈现“头部集中、市场分散”特征&#xff1a;金智维以10.1%份额位居第一&#xff0c;艺赛旗&#xff08;9.1%&#xff09;、来也科技&#xff08;8.4%&#xff09;紧随其后&#xff0c;前…...