python轮转数组及nums和nums[:]的区别
文章目录
- 189. 轮转数组
- nums和nums[:]
- python数组两元素互换其值
- a=[None] * n创建列表
- 异或^:
本文主要利用leetcode上的189. 轮转数组来解剖其涉及到的a=[None] * n,nums[:]等相关知识。
189. 轮转数组
给你一个数组,将数组中的元素向右轮转 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]
题解:
class Solution:def rotate(self, nums: List[int], k: int) -> None:"""Do not return anything, modify nums in-place instead."""arr = [None]*len(nums)for i in range(len(nums)):arr[(i+k) % len(nums)] = nums[i]nums[:] = arr#方法2:# n = len(nums)# k = k % n# nums[:] = nums[n - k:] + nums[:n - k]#方法3:# n = len(nums)# k %= n# nums.reverse()# nums[:k] = list(reversed(nums[:k]))# nums[k:] = list(reversed(nums[k:]))# 方法4:# for i in range(k):# nums.insert(0,nums[-1])# del nums[-1]
nums和nums[:]
- nums = A: 更改nums这一变量名所指的对象,让nums变量指向A所指向的对象。
- nums[:] = A: 对nums指向的对象赋值,把A变量指向的对象的值逐个复制到nums指向的对象中并覆盖nums指向的对象的原来值。
nums[:]
等价于nums[0:len(nums)]
相当于取nums对应对象的一个视图,通过用这个来改变原对象的某几位值。
如:A[:2] = [0, 1],改变了A所指向的list对象的前两个值。
A = [0 ,1],让A这一变量名指向新的List对象[0,1]
此处参考- 加深理解:参考文章
python数组两元素互换其值
nums = [1,2,3,4,5,6,7]
nums[0], nums[4] = nums[4], nums[0]
print(nums)#[5, 2, 3, 4, 1, 6, 7]
a=[None] * n创建列表
如果用a = [] 创建数组的话用到a[1]时会报错:IndexError: list assignment index out of range
,所以会用到a=[None] * n
,n为要创建的数组长度
grid = [[0,0,0,0],[1,0,1,0],[0,1,1,0],[0,0,0,0]]
m, n = len(grid), len(grid[0])#m行n列
a=[False] * n
print(a)#[False, False, False, False]
vis = [[False] * n for _ in range(2)]
print(vis)#[[False, False, False, False], [False, False, False, False]]
异或^:
如果是一个偶数^1,那么答案是该偶数+1.如果是一个奇数^1,那么答案是该奇数-1
python轮转数组及nums和nums[:]的区别相关推荐
- Python中数组,列表,元组的区别、定义、功能
准确的来说,在python中是没有数组类型的,python中取而代之的是列表和元组.列表比元组好用,因为元组一旦定义就没法修改.而列表不仅可以和数组一样按索引访问,还有一堆的功能. 列表: (1)添加 ...
- python列表原地交换nums[i], nums[nums[i]] = nums[nums[i]], nums[i]的解决方法
问题描述 python列表原地交换问题,当索引为 数组[索引] 的表达形式时,不合适的交换操作将导致错误的输出 法1(错误) nums[i], nums[nums[i]] = nums[nums[i] ...
- python中nums[:]和nums
nums[:]是指nums中的每一个元素,nums指向列表对象,id号不一样. 比如今天刷题时,碰到一道题,要求原地向右轮转nums数组. 使用nums和nums[:]会得到不同的答案 原地修改列表应 ...
- 给你一个整数数组 nums 。 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 。
给你一个整数数组 nums . 如果一组数字 (i,j) 满足 nums[i] == nums[j] 且 i < j ,就可以认为这是一组 好数对 . 返回好数对的数目. 示例 1: 输入:nu ...
- 给你一个数组 nums 。数组「动态和」的计算公式为:runningSum[i] = sum(nums[0]…nums[i]) 。 请返回 nums 的动态和。 来源:力扣(LeetCode) 链
执行用时:0 ms, 在所有 Java 提交中击败了100.00% 的用户 内存消耗:38.7 MB, 在所有 Java 提交中击败了94.44% 的用户 解题思路 直接保存在原数组,不浪费内存 代码 ...
- /给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[
给你一个由 n 个整数组成的数组 nums ,和一个目标值 target .请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] ( ...
- python: nums 和 nums[:] 的区别
最近在刷题时遇到一个问题,添加数组 nums 和添加 nums[:] 会得到不同的输出结果. 写个例子: nums = [1,2,3,4,5] # 创建一个数组 res = [] res.append ...
- python实现数组的全组合以及全排列
全排列与全组合全排列的递归代码:python实现 全排列 #全排列def swap(nums,i,j):temp = nums[i]nums[i] = nums[j]nums[j] = temp# 递 ...
- 轮转数组(Java)
算法--轮转数组(Java) 题目来源 给你一个数组,将数组中的元素向右轮转 k 个位置,其中 k 是非负数. 示例 1: 输入: nums = [1,2,3,4,5,6,7], k = 3 输出: ...
最新文章
- matlab simulink 四分之一1/4车辆垂向振动模型 轮毂电机
- [LeetCode]k个一组翻转链表(Reverse Nodes in k-Group)
- 学院派CAD工具箱及CAD调用外部应用程序的方法
- Linux shell条件判断
- QT的QSet类的使用
- 银行业务队列简单模拟 (25 分)c语言c++
- java 循环3次_想请教下如何用for循环猜错3次就退出游戏
- linux怎么进去vi编辑器,red hat enterprise linux开机怎么进入vi编辑器界面?
- java报表的导出excel_java导出excel报表
- ScrollReveal-元素随页面滚动产生动画的js插件
- Transformer长大了,它的兄弟姐妹们呢?(含Transformers超细节知识点)
- 曼昆:宏观经济学简史(转)
- 如何用xmlspy将xml文档生成xsd文件
- 变色龙引导r2795
- 如何组织一个高效的开发团队?
- 解决Loadrunner打开网页证书错误问题
- C# Serialization(序列化)
- 【信息安全】数据安全与信息安全
- HTML5+CSS3-边框背景图、多背景图、CSS选择器、网络字体、边框背景图片、过渡、放大、旋转
- Java、计算三角形的周长