返回信息流您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。<br><br>下面是一种修正后的写法,通过在原数组上进行修改来完成旋转:<br><br>class Solution(object): <br> def rotate(self, nums, k): <br> n = len(nums) <br> k = k % n # 保证k在范围内 <br> # 使用切片方法 <br> nums[:] = nums[-k:] + nums[:-k] # 将数组旋转并赋值回原数组 <br>代码解释:<br>k = k % n:<br><br>因为旋转 n 次相当于不旋转,所以我们使用取模将 k 限制在合法范围内。<br>nums[:] = nums[-k:] + nums[:-k]:<br><br>nums[-k:] 获取最后 k 个元素。<br>nums[:-k] 获取前面的元素。<br>我们将这两个部分连接起来形成新的顺序,并使用 nums[:] 来更新原数组 nums。<br>直接在原数组上修改的结果<br>使用这种方法后,您会发现 nums 在完成该方法调用后会直接被修改为期望的结果 [5, 6, 7, 1, 2, 3, 4]。在 LeetCode 的测试中,系统通常会查看原始数组的修改情况,而不是返回值。
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7658314同步于 2024/10/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖
xdx求问力扣轮转数组题
IWhisper#566
2024/10/4镜像同步5 回复
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
从[1,2,3,4,5,6,7]向右循环3位变成[5,6,7,1,2,3,4]。我这么写为什么不对啊:<br>class Solution(object):<br> def rotate(self, nums, k):<br> nums1 =[]<br> for j in range(len(nums)):<br> nums1.append(0)<br> for i in range(len(nums)):<br> if i+k < len(nums):<br> nums1[i+k] = nums[i]<br> else:<br> nums1[i+k-len(nums)] = nums[i]<br> return nums1<br>力扣网页跑出来结果还是[1,2,3,4,5,6,7],但在本地idea跑出来结果是对的呀。
您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。<br><br>下面是一种修正后的写法,通过在原数组上进行修改来完成旋转:<br><br>class Solution(object): <br> def rotate(self, nums, k): <br> n = len(nums) <br> k = k % n # 保证k在范围内 <br> # 使用切片方法 <br> nums[:] = nums[-k:] + nums[:-k] # 将数组旋转并赋值回原数组 <br>代码解释:<br>k = k % n:<br><br>因为旋转 n 次相当于不旋转,所以我们使用取模将 k 限制在合法范围内。<br>nums[:] = nums[-k:] + nums[:-k]:<br><br>nums[-k:] 获取最后 k 个元素。<br>nums[:-k] 获取前面的元素。<br>我们将这两个部分连接起来形成新的顺序,并使用 nums[:] 来更新原数组 nums。<br>直接在原数组上修改的结果<br>使用这种方法后,您会发现 nums 在完成该方法调用后会直接被修改为期望的结果 [5, 6, 7, 1, 2, 3, 4]。在 LeetCode 的测试中,系统通常会查看原始数组的修改情况,而不是返回值。
<br>【 在 IWhisper#959 的大作中提到: 】<br><font class="f006">: 您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。 </font><br><font class="f006">: 下面是一种修正后的写法,通过在原数组上进行修改来完成旋转: </font><br><font class="f006">: class Solution(object): </font><br><font class="f006">: ................... </font><br>非常感谢
你还是谢gpt吧<img src="/img/ubb/ema/10.gif" alt="ema10" style="display:inline;border-style:none"><br>【 在 IWhisper#566 的大作中提到: 】<br><font class="f006">: </font><br><font class="f006">: 非常感谢 </font>
g如p如t<img src="/img/ubb/em/21.gif" alt="em21" style="display:inline;border-style:none"><br>【 在 IWhisper#959 的大作中提到: 】<br><font class="f006">: 您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。 </font><br><font class="f006">: 下面是一种修正后的写法,通过在原数组上进行修改来完成旋转: </font><br><font class="f006">: ............ </font>