news 2026/4/23 14:32:56

python编程实战(三)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 14:12:41

名藏大道,悟则大同——《升命学说》中的分享智慧与文明升维

名藏大道&#xff0c;悟则大同——《升命学说》中的分享智慧与文明升维名字&#xff0c;是每个人降临世间获得的第一个标识&#xff0c;看似只是一个用于区分的符号&#xff0c;实则在汉语文明的基因中&#xff0c;埋藏着连接个体与世界的深层密码。21世纪杰出哲学家、思想家颜…

作者头像 李华
网站建设 2026/4/20 15:44:41

基于springboot + vue汽车销售系统

汽车销售系统 目录 基于springboot vue汽车销售系统 一、前言 二、系统功能演示 详细视频演示 三、技术选型 四、其他项目参考 五、代码参考 六、测试参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 基于springboot vue汽车销售系统 一、前言 博主介绍…

作者头像 李华
网站建设 2026/4/23 14:13:55

15、网络安全检测与防护:psad的功能与应用

网络安全检测与防护:psad的功能与应用 1. psad对异常流量的检测 psad在网络安全检测中发挥着重要作用,它能够检测多种异常流量,以下是几种常见的检测场景: - LAND攻击检测 :psad通过检查iptables日志中的SRC和DST字段是否相同来进行sameip测试。为减少误报,会排除环回…

作者头像 李华
网站建设 2026/4/16 23:59:36

21、网络安全:Snort 与 iptables 的协同应用及 fwsnort 部署指南

网络安全:Snort 与 iptables 的协同应用及 fwsnort 部署指南 在网络安全领域,Snort 和 iptables 是两款强大的工具,它们在入侵检测和防护方面发挥着重要作用。本文将深入探讨 Snort 规则选项在 iptables 中的模拟应用,以及 fwsnort 的部署方法。 1. Snort 规则与 iptable…

作者头像 李华
网站建设 2026/4/23 14:30:26

vue基于springboot的图书资料借阅信息管理系统的设计与实现

目录已开发项目效果实现截图开发技术介绍系统开发工具&#xff1a;核心代码参考示例1.建立用户稀疏矩阵&#xff0c;用于用户相似度计算【相似度矩阵】2.计算目标用户与其他用户的相似度系统测试总结源码文档获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&…

作者头像 李华
网站建设 2026/4/23 11:47:48

中文语音合成新标杆!EmotiVoice对本土语言优化出色

中文语音合成新标杆&#xff01;EmotiVoice对本土语言优化出色 在虚拟主播的直播间里&#xff0c;一句“今天真是个令人兴奋的好日子&#xff01;”如果用机械平淡的声音念出&#xff0c;观众可能毫无波澜&#xff1b;但若语气轻快、语调上扬&#xff0c;带着抑制不住的喜悦感&…

作者头像 李华