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

python编程实战(三)

题目1:

给你一个整数数组nums,返回 数组answer,其中answer[i]等于nums中除nums[i]之外其余各元素的乘积 。

题目数据保证数组nums之中任意元素的全部前缀元素和后缀的乘积都在32 位整数范围内。

不要使用除法,且在O(n)时间复杂度内完成此题。

关键数据结构:

列表(一维数组)

核心思路:

除nums[i]元素之外的元素乘积可以分为两部分,nums[i]之前的元素的乘积和nums[i]之后的元素的乘积;将数组num正向遍历一遍之后,可以再反向遍历一遍,然后用一个数组先存储前元素乘积,再存储后元素乘积。

代码:

class Solution:
def productExceptSelf(self, nums: List[int]) -> List[int]:
n = len(nums)
ans = [1] * n
# 从左到右计算前缀积
prefix = 1
for i in range(n):
ans[i] = prefix
prefix *= nums[i]
# 从右到左计算后缀积并乘以结果
suffix = 1
for i in range(n - 1, -1, -1):
ans[i] *= suffix
suffix *= nums[i]
return ans

题目2:

给你一个未排序的整数数组nums,请你找出其中没有出现的最小的正整数。

请你实现时间复杂度为O(n)并且只使用常数级别额外空间的解决方案。

关键数据结构:
用列表实现哈希表效果

关键思路:
原地哈希算法,我们希望在位置i上的值是i+1,如在位置0上的位置是1,这样可以起到高效的排序效果;如果位置i上的数!=i+1,那么此时的i+1就是缺失的最小正整数。

代码:
class Solution:
def firstMissingPositive(self, nums: List[int]) -> int:
n = len(nums)
for i in range(n):
while 1 <= nums[i] <= n and nums[nums[i] - 1] != nums[i]:
target_idx = nums[i] - 1
nums[i], nums[target_idx] = nums[target_idx], nums[i]

for i in range(n):
if nums[i] != i + 1:
return i + 1

return n + 1

题目3:

给定一个mxn的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法(原地算法是指在算法执行过程中,只使用常数量级的额外空间,主要通过对输入数据的原有存储空间进行修改来完成计算,而不需要额外的数据结构来存储中间结果或输出结果)。

关键数据结构:

二维数组

思路:

使用双循环遍历矩阵每个元素,如果某个元素为0,将其对应的行、列通过布尔值打上标记;再次双循环遍历矩阵,如果某一行或者某一列标记为零,将整行或整列元素置0

代码(这里偷懒没用原地算法):

class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
m, n = len(matrix), len(matrix[0])
row = m * [False]
col = n * [False]

for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
row[i] = True
col[j] = True

for i in range(m):
for j in range(n):
if row[i] or col[j]:
matrix[i][j] = 0

http://www.jsqmd.com/news/104399/

相关文章:

  • [创业之路]-736-在组织中,责任意味着:“这件事成与败,板子打在我身上。”责任 = 该做的事(义务) + 出事我来扛(担当)
  • 【光子 AI】《Jeff Dean 传记:Google 工程师的传奇人生》
  • 模型性能监控仪表盘:实时追踪EmotiVoice服务状态
  • [创业之路]-736-目标和结果导向:CTO职责及完成职责要求所具备的能力要求:用技术驱动业务增长、构建长期竞争力,并对技术投入的 ROI(投资回报率)负责。不是“管代码的头”,而是“技术变现的操盘手
  • 校园快递代取|基于springboot + vue校园快递代取系统(源码+数据库+文档)​
  • 基于SpringBoot的高校迎新管理系统毕业设计项目源码
  • 化工厂气象站:国产防爆气象站
  • 如何用EmotiVoice创建会‘生气’或‘开心’的AI角色?
  • 如何设计一个盲盒系统
  • 当代中国哲学之光:颜廷利——引领东方智慧走向世界的思想巨擘
  • 【赵渝强老师】PostgreSQL的逻辑存储结构
  • 名藏大道,悟则大同——《升命学说》中的分享智慧与文明升维
  • 成都集成墙板源头厂家哪家靠谱?求专业推荐 - 朴素的承诺
  • 2025年北京制冷螺杆压缩机维修权威推荐榜单:制冷离心机压缩机/压缩机/压缩机耐氟电机维修精选 - 品牌推荐官
  • EmotiVoice语音合成系统灰度经验复盘与知识沉淀
  • vue基于springboot的医院物资器械维修巡检管理系统的设计与开发没论文
  • 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍
  • vue基于springboot的在线数据二手闲置商品交易平台
  • JavaScript 上下文间消息传递方式对比(结构化克隆算法、可转移对象、共享数组缓冲区)
  • 基于springboot服装商店管理与分析系统毕业设计项目源码
  • 2025十大益生菌品牌选购干货:幽定妥入选TOP10,国家认可效果稳 - 博客万
  • vue基于springboot的学习资料资源分享共享平台的研究和实现
  • PCB焊锡桥连与拉尖成因分析与工艺优化方案
  • 中文语音合成哪家强?EmotiVoice开源方案实测分享
  • 2025年温州文武学校排行榜,苍南县飞林文武学校口碑怎么样 - myqiye
  • 2025年幻灯片转笔记与资料知识库导入工具TOP5推荐,段落 - mypinpai
  • 中国宁波8万㎡试炼场,藏着全球汽车的安全答案
  • vue基于springboot的学生选课推荐互动社交系统(好友,关注,课程评价)
  • 2025年柔性夹爪优选品牌:苏州柔触机器人科技有限公司 - 品牌2025
  • EmotiVoice语音合成在虚拟现实环境中的沉浸式体验增强