当前位置: 首页 > news >正文

LeetCode刷题记录(持续更新中)

LeetCode刷题记录

2025.10.8开始刷题~记录一下过程中遇到的一些小问题
C++菜鸟选手转码中 所以一些语法问题也会被一起记录^-^

189. Rotate Array

Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.
最初思路(并不符合考点)

class Solution(object):def rotate(self, nums, k):n=len(nums)nums1=[None]*nk=k%ncnt=0if k==0:return numsfor i in range(n-k,n):nums1[cnt]=nums[i]cnt+=1for i in range(0,n-k):nums1[cnt]=nums[i]cnt+=1nums[:]=nums1return nums     

更简洁的思路:
三次反转(最优解 - O(1) 空间复杂度)
这是一个非常巧妙的方法,不需要任何额外的数组。
思路

  1. 反转整个数组。例如 [1,2,3,4,5,6,7] 变为 [7,6,5,4,3,2,1]
  2. 反转前 k 个元素[7,6,5] 变为 [5,6,7],数组变为 [5,6,7,4,3,2,1]
  3. 反转后 n-k 个元素[4,3,2,1] 变为 [1,2,3,4],数组变为 [5,6,7,1,2,3,4]

Python 代码示例

class Solution(object):def rotate(self, nums, k):n = len(nums)k = k % n# 定义一个辅助函数来反转数组的特定部分def reverse(start, end):while start < end:nums[start], nums[end] = nums[end], nums[start]start += 1end -= 1# 步骤 1: 反转整个数组reverse(0, n - 1)# 步骤 2: 反转前 k 个元素reverse(0, k - 1)# 步骤 3: 反转后 n-k 个元素reverse(k, n - 1)

这个方法是这道题目的最优解,因为它只在原数组上操作,空间复杂度是 O(1)O(1)O(1)

数组大小硬编码和返回值

Python和C++不一样,这道题应该根据题目输入来指定数组大小
nums1=[None]*100000 这种写法创建了一个固定大小的巨大数组。如果输入的 nums 长度只有 7, nums1 会是 [5, 6, 7, 1, 2, 3, None, None, ...],这显然是不对的。应该创建一个和 nums 等长的临时数组。

nums=nums1一般不能这么对数组赋值

nums = nums1 只是让两个名字指向同一个列表对象;不会把内容“拷贝/写回”到原列表里。
更靠谱的几种写法:

  1. 原地覆盖(推荐用于题目要求 in-place)
nums[:] = nums1   # 把 nums1 的内容写进 nums 本体
  1. 拷贝出一个新列表(不原地)
b = nums1[:]          # 浅拷贝
c = list(nums1)       # 浅拷贝
# 若是嵌套列表需要深拷贝:
# import copy; d = copy.deepcopy(nums1)
  1. 为什么 nums = nums1 不行?(两个层面)
  • 别名问题:之后改 nums.append(9)nums1 也会跟着变,因为它们是同一个对象。
  • 函数参数绑定:在函数内写 nums = nums1 只是把局部变量 nums 重新绑定;调用者传进来的那个列表对象没被改。要么修改 nums[:],要么对 nums.append/.pop/... 这类原地操作。

示例:

def f(nums):other = [7,8,9]nums = other       # 只是改了局部绑定,外面的 nums 不变x = [1,2,3]
f(x)
print(x)               # 仍是 [1,2,3]def g(nums):other = [7,8,9]nums[:] = other    # 原地覆盖g(x)
print(x)               # 变成 [7,8,9]

正确做法:用切片赋值 nums[:] = nums1

http://www.dtcms.com/a/458958.html

相关文章:

  • 北京网站建设公司华网制作作房地产销售税率是多少
  • 家电维修网站建设新闻资讯网站备案
  • 做一个网站赚钱吗石家庄58同城招聘信息
  • 外贸优化网站制作网站开发费用是无形资产
  • 营销型网站具备的二大能力网站建设要做哪些工作
  • 网站设计模板htmlwordpress调整配置
  • 做设计的网站商家入驻信誉好的高密网站建设
  • 上海最好的网站是什么谁有网站备案号
  • js 5哈哈哈哈哈哈哈哈
  • 齐齐哈尔住房和城乡建设局网站wap电影网站建设
  • 毕业视频代做网站毕业设计购物网站怎么做
  • 基于51单片机的温室植物生长监测系统
  • 公司网站怎么注册网站搜索引擎优化方案范文
  • 苏州优化网站百度一下知道官网
  • 深圳住房建设局网站申报商丘seo优化
  • 098-python列表_切片_slice_开始_结束
  • 微分几何的张量统一公式-迹公式(映射公式)
  • 做灯箱的网站砀山网站建设
  • 确山专业网站建设笑话网站模板
  • 六亲无靠人格:心理机制、社会影响与应对策略的深度分析概念界定与基本内涵
  • 网站开发工具选用原则自助建站百度
  • Python 3.14 发布(2025 年 10 月 7 日)
  • 下载男女做爰免费网站广告公司活动策划公司
  • 怎么利用网站赚广告费百度精简版网页入口
  • 网站建设协议书 保密条款丰台建站公司
  • 模板网站建设优惠wordpress淘宝客建站教程视频
  • pyexp: 1靶场渗透
  • 袜子技术支持深圳网站建设自建虚拟主机网站源码
  • 工作一般做网站视频的工作叫做什么太原模板建站定制网站
  • 企业网站建设多长时间建设模板网站