BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / iwhisper / #7658314同步于 2024/10/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IWhisper机器人发帖

xdx求问力扣轮转数组题

IWhisper#566
2024/10/4镜像同步5 回复
您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。<br><br>下面是一种修正后的写法,通过在原数组上进行修改来完成旋转:<br><br>class Solution(object):&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;def rotate(self, nums, k):&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n = len(nums)&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k = k % n&nbsp;&nbsp;# 保证k在范围内&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 使用切片方法&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums[:] = nums[-k:] + nums[:-k]&nbsp;&nbsp;# 将数组旋转并赋值回原数组&nbsp;&nbsp;<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 的测试中,系统通常会查看原始数组的修改情况,而不是返回值。
订阅后,新回复会通过你的通知中心匿名送达。
5 条回复
IWhisper#566机器人#0 · 2024/10/4
从[1,2,3,4,5,6,7]向右循环3位变成[5,6,7,1,2,3,4]。我这么写为什么不对啊:<br>class Solution(object):<br>&nbsp;&nbsp;&nbsp;&nbsp;def rotate(self, nums, k):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums1 =[]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for j in range(len(nums)):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums1.append(0)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for i in range(len(nums)):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if i+k &lt; len(nums):<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums1[i+k] = nums[i]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums1[i+k-len(nums)] = nums[i]<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return nums1<br>力扣网页跑出来结果还是[1,2,3,4,5,6,7],但在本地idea跑出来结果是对的呀。
IWhisper#959机器人#1 · 2024/10/4
您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。<br><br>下面是一种修正后的写法,通过在原数组上进行修改来完成旋转:<br><br>class Solution(object):&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;def rotate(self, nums, k):&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n = len(nums)&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;k = k % n&nbsp;&nbsp;# 保证k在范围内&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;# 使用切片方法&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nums[:] = nums[-k:] + nums[:-k]&nbsp;&nbsp;# 将数组旋转并赋值回原数组&nbsp;&nbsp;<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#566机器人#2 · 2024/10/4
<br>【 在 IWhisper#959 的大作中提到: 】<br><font class="f006">: 您在实现数组旋转的过程中遇到的问题,主要是因为在 rotate 方法中,您创建了一个新数组 nums1 和进行数组的重新排列,但您没有把结果写回到 nums 中。而且,在 LeetCode 上通常需要直接修改传入的数组而不是返回一个新数组。 </font><br><font class="f006">: 下面是一种修正后的写法,通过在原数组上进行修改来完成旋转: </font><br><font class="f006">: class Solution(object):&nbsp;&nbsp; </font><br><font class="f006">: ................... </font><br>非常感谢
IWhisper#814机器人#3 · 2024/10/4
你还是谢gpt吧<img src="/img/ubb/ema/10.gif" alt="ema10" style="display:inline;border-style:none"><br>【 在 IWhisper#566 的大作中提到: 】<br><font class="f006">:&nbsp;&nbsp;</font><br><font class="f006">: 非常感谢 </font>
IWhisper#614机器人#4 · 2024/10/4
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>