首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Python3实现旋转数组的3种算法

下面是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]

01

变量类型-Number

教程: 一:数字类型     (1)int 没有限制大小,有以下的四种表现形式:         1:2进制:以'0b'开头---bin         2:8进制:以'0o'开头---oct         3:10进制:正常显示----int         4:16进制:以'0x'开头- hex     (2)float:4个字节     (3)复数(complex)--a + bj,complex(a,b)--实部a和虚部b都是浮点型     (4)bool:比如True Python有个特别的机制,它会在解释器启动的时候事先分配好一些缓冲区,这些缓冲区部分是固定好取值,例如整数[-5,256]的内存地址是固定的(这里的固定指这一次程序启动之后,这些数字在这个程序中的内存地址就不变了,但是启动新的python程序,两次的内存地址不一样)。有的缓冲区就可以重复利用。这样的机制就使得不需要python频繁的调用内存malloc和free。 二:数字运算     (1)加减乘除(/总返回一个浮点数)     (2)// 取整   % 取余    **乘方 三:数字类型转换     上面的方法进行转换 四:数学函数     (1)math库中的函数abs, exp, max,min,pow(x, y)等     (2)随机数函数random()\uniform(x, y)     (3)三角函数sin,cos 五:数字常量     e和pi

03

从小白到年薪10万+,优秀的数据分析能力如何速成?

广泛被应用的数据分析 谷歌的数据分析可以预测一个地区即将爆发的流感,从而进行针对性的预防;淘宝可以根据你浏览和消费的数据进行分析,为你精准推荐商品;口碑极好的网易云音乐,通过其相似性算法,为不同的人量身定制每日歌单…… 数据正在变得越来越常见,小到我们每个人的社交网络、消费信息、运动轨迹……,大到企业的销售、运营数据,产品的生产数据,交通网络数据…… 如何从海量数据中获得别人看不见的知识,如何利用数据来武装营销工作、优化产品、用户调研、支撑决策,数据分析可以将数据的价值最大化。 数据分析人

07

Python负数取余总结

余数存在正余数和负余数,要了解负余数,需要先了解取整原理 17 // 5 = 3 -17//5 = -4 17//-5 = -4 -17//-5 = 3 根据上述的4个公式,可以看出python的编译器是的取整符号位由被除数和除数同时决定,整数的数值是由向下取整的,即如果整数的符号位正,则取靠近0的数,如果整数是负数,则取远离0的数或者也可以这样理解:被除数和除数处于0的一边就往靠0的方向取整,如果是处于0的两边就往远离0的方向取整。 了解了取整原理后,再理解取余就比较简单了 17%5 = 2 这个没什么好解释,大家都了解的 -17%5= 3 该等式的被除数和除数处于0的两边,那必然是往远离0的方向取余数,2+3 = 5按照公式5 的正余数是2,那2所对应的负余数是3,余数符号位与被除数保持一致,为3 17%-5 = -3 同上例,因为被除数的符号为负,所以余数为-3 -17%-5 = -2,被除数与除数是在同一边,则往0靠,所以余数为整余数2,因为被除数的符号为负, 所以余数为-2

01
领券