python旋转数组_Python3实现旋转数组的3种算法

一、试题

给出一个数组,将数组中的元素往右边移动k个位置,当中k是非负数。

比如说:

输入:[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]*

反映:

1.竭尽所能想到越多的解决方案,起码有三种不一样的方法能够处理这个问题。

2.必须要使用空间复杂度为O(1)的原地算法。

二,解题算法

解法一

以倒数第k个值为分界线,把nums截成两组再搭配。由于k可能超过nums的长度(当这两者一样的过程中,就等同于nums不存在移动),故此大家取k%len(nums),k和nums的长度取余,便是最终大家必须要移动的位置

代码给出:if nums:

k = k % len(nums)

nums[:]=nums[-k:]+nums[:-k]时间:64ms

假设:

nums= [1,2,3,4,5,6,7]

k =3

运行结果:

[5, 6, 7, 1, 2, 3, 4]

解法二

先把nums最后一位移动到第一位,随后删除最后一位,循环k次。k=k%len(nums),取余

代码给出:if nums:

k = k % len(nums)

while k > 0:

k -= 1

nums.insert(0, nums[-1])

nums.pop()时间:172ms

假设:

nums= [1,2,3,4,5,6,7]

k =3

运行结果:

[5, 6, 7, 1, 2, 3, 4]

解法三:

先把nums复制到old_nums,随后nums中索引为x的元素移动k个位置后,当前索引为x+k,其值为old_nums[x]。,故此大家把x+k处理成(x+k)%len(nums),取余操作,减少重复的次数。

代码给出:if nums:

old_nums = nums[:]

l = len(nums)

for x in range(l):

nums[(x+k) % l] = old_nums[x]时间:64ms

假设:

nums= [1,2,3,4,5,6,7]

k =3

运行结果:

[5, 6, 7, 1, 2, 3, 4]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/552000.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python数字大小写转换代码_用python实现把数字人民币金额转换成大写的脚本程序...

# -*- coding: utf-8 -*- def Num2MoneyFormat( change_number ): """ .转换数字为大写货币格式( format_word.__len__() - 3 2位小数 ) change_number 支持 float, int, long, string """ format_word ["分", "角", &quo…

count数据库优化oracle,迷惑性SQL性能问题排查与优化

:数据科学、人工智能从业者的在线大学。数据科学(Python/R/Julia)数据分析、机器学习、深度学习作者简介戴秋龙,拥有超过八年的电信、保险、税务行业核心系统ORACLE数据库优化,优化经验,具备丰富的行业服务背景。对Oracle数据库有…

python getopt参数参数自动补全_如何在Python中使用getopt / OPTARG?如果给出过多的参数(9),如何转移参数?...

How to use getopt/optarg in Python?解决方案This is an example of how I do it, I usually use the same basic template:import sysimport getopttry:opts, args getopt.getopt(sys.argv[1:], m:p:h, [miner, params, help])except getopt.GetoptError:usage()sys.exit(2…

python读取数据库数据类型_Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】...

本文实例讲述了Python实现从SQL型数据库读写dataframe型数据的方法。分享给大家供大家参考,具体如下: Python的pandas包对表格化的数据处理能力很强,而SQL数据库的数据就是以表格的形式储存,因此经常将sql数据库里的数据直接读取为…

oracle客户端三种连接,客户端连接ORACLE的几种方法

一、HOSTNAME方法对于网络结构比较单一,Oracle服务器比较少的情况下,可以使用HOSTNAME方法。不过这种方法有几个限制:1、 必须使用TCP/IP协议2、 不能使用高级管理工具,比如Oracle Connection Manager3、 客户端必须有相应的扩展命…

swiper.js pagination指示点不变_电缆故障点的四种实用测定方法

一、电缆故障的种类与判断无论是高压电缆或低压电缆,在施工安装、运行过程中经常因短路、过负荷运行、绝缘老化或外力作用等原因造成故障。电缆故障可概括为接地、短路、断线三类,其故障类型主要有以下几方面:①三芯电缆一芯或两芯接地。②二…

oracle undo段的作用,Oracle数据库中Undo数据段的作用及类型

Undo数据段的作用:事务回滚(Transaction Rollback):程序执行rollback操作。事务修复(Transaction Recovery):rollback是recovery的一部分。读取一致(Read Consistency):根据SCN(system change number)来保证读取数据的一致性。Und…

wampserver php扩展openssl 不可用_PHP基础及WAMP集成基础

PHP语言编写的基础框架 PHP语言的编写框架与HTML5的一致&#xff0c;都是一下框架&#xff1a;<!DOCTYPE html> <html><head></head><body> </body> </html>PHP的主要表达语句在body里面&#xff0c;主题内容在<?p ?>标签中…

python expect模块_Python尚学堂高淇|第二季0408P119P123with上常见的异常的解决tryexcept...else结构,...

P119 04&#xff1a;try ...except...else结构try..except...else结构增加了"else快"如果try快当中没有抛出异常&#xff0c;则执行else快&#xff0c;如果try快当中抛出异常&#xff0c;则执行except快&#xff0c;不执行【实例】try....except...else结构执行测试…

oracle 31693,ORACLE expdp备份与ORA-31693、ORA-02354、ORA-01555

近期&#xff0c;某综合网管系统expdp备份出现异常&#xff0c;报错信息如下&#xff1a;Export: Release 10.2.0.4.0 - 64bit Production on 星期二, 12 4月, 2016 11:30:00Copyright (c) 2003, 2007, Oracle. All rights reserved.;;;连接到: Oracle Database 10g Enterpris…

用c语言简单办法做一个字典_幼儿园手工,用废纸筒做一个简单的小蝴蝶,有教程...

幼儿园的手工&#xff0c;除了用卡纸做各种简单的小制作外&#xff0c;纸筒也是常用的手工材料。下面用纸筒做一个简单的小蝴蝶&#xff0c;做法很简单。制作过程&#xff1a;准备材料废纸筒、剪刀、胶、水彩笔&#xff0c;纸板。在纸筒上剪下五个圈圈剪完的样子见下图把里面粘…

bing搜索引擎入口_互联网流量入口——头条的搜索计划

互联网时代&#xff0c;谁掌控了用户流量&#xff0c;那它就基本上胜出了一半&#xff1a;只有大量的用户和海量的数据才是信息化时代的主要要素。这些大数据信息和火热的深度学习算法的结合&#xff0c;能够催生无数的应用场景&#xff0c;通过不断的扩展和调整业务来保证自身…

jvm oracle sun,JVM - 常见的JVM种类

HotSpot VMHotSpot VM是绝对的主流。大家用它的时候很可能就没想过还有别的选择&#xff0c;或者是为了迁就依赖了Oracle/Sun JDK某些具体实现的烂代码而选择用HotSpot VM省点心。Oracle / Sun JDK、OpenJDK的各种变种(例如IcedTea、Zulu)&#xff0c;用的都是相同核心的HotSpo…

python单链表实现具体例子_Python实现数据结构线性链表(单链表)算法示例

本文实例讲述了Python实现数据结构线性链表&#xff08;单链表&#xff09;算法。分享给大家供大家参考&#xff0c;具体如下&#xff1a; 初学python&#xff0c;拿数据结构中的线性链表存储结构练练手&#xff0c;理论比较简单&#xff0c;直接上代码。 #!/usr/bin/python # …

oracle conneciton properties,在WAS Liberty连接池中,我可以验证借用连接吗?

我们当前正在将应用程序迁移到Liberty服务器(8.5.5.9)上运行。我们发现应用程序服务器和数据库之间的连接偶尔会被防火墙终止&#xff0c;因为它们会在很长一段时间内处于空闲状态。发生这种情况时&#xff0c;在下一个HTTP请求中&#xff0c;应用程序将收到其中一个断开的连接…

python图形化编程工具哪个好_mPython(图形化编程软件) V0.5.0 官方版

mPython 是一款针对Python 3编程语言的图形化编辑工具。支持函数&#xff0c;仿真、hex、python、blockly三种代码读写等功能。并可以与TPYBoard系类开发板配合使用&#xff0c;直接连接PC端进行编程。【功能特点】 1、不依赖网络&#xff0c;可离线安装使用 2、支持hex、pytho…

python三种变量方式_python2.x 3种变量形式调用

python 变量使用raw_input 2.x input 3.x第一种name input("name:")age input("age:")job input("job:")info ----------info - %s ----------Name: %sAge: %sJob: %s% (name,name,age,job)print (info)第二种name input("name:"…

linux更新系统内核,如何更新Linux内核来提升系统性能?

Linux内核的开发速度是前所未有的&#xff0c;大概每二三个月就会有一个新的主要版本发布。每次发布都带来了几项新的功能和改进&#xff0c;许多人可以充分利用它们&#xff0c;让计算体验更快、更高效或者有其他方面的提升。可问题是&#xff0c;你通常无法充分利用这些刚发布…

php对接V免签支付教程_【全网首发】最新版影视小程序搭建教程完整版

大家好&#xff0c;这里是深海网络&#xff0c;今天给大家讲解一下新版影视小程序搭建。  首先给大家看一下新版影视小程序是什么样子的&#xff0c;它有黑夜和白天两种观影模式&#xff0c;而且搜索精准&#xff0c;播放速度快。01第一步&#xff0c;开始正式搭建。新版区小…

linux编译代码命令,Linux下使用GCC命令编译代码

Linux下初学时最好从命令行入手&#xff0c;这样可以熟悉从编写程序、编译、调试和执行的整个过程。编写程序可以用vi/vim(个人觉得vim比vi好用)或其它编辑器编写。编译则使用gcc命令。要往下学习首先就得熟悉gcc命令的用法。gcc命令提供了非常多的命令选项&#xff0c;但并不是…