本篇内容主要讲解“Python多维列表中的坑怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python多维列表中的坑怎么解决”吧!(以下默认nums
为数组。)
1.遍历数组
遍历:带索引遍历2.动态规划(dp)
动态规划一般可以用一个数组保存状态。见53.最大子数组和
。
用数组保存状态是非常常用的做法。例如36.有效的数独
、 73. 矩阵置零
。3.双指针
见88.合并两个有序数组
、350.两个数组的交集 II
可以是左右指针对一个数组使用。
也可以是两个指针遍历两个数组。while index1
Python中一般用list
实现可变数组。
下面是list
常用的函数。
(可变序列类型通用操作,只有.sort
是list
独有的。参考序列操作文档)创建多维列表,一般用等价于而不是原因在于用*
对列表执行重复操作并不会创建副本,而只是创建现有对象的引用。 *3
创建的是包含 3 个引用的列表,每个引用指向的是同一个长度为 2 的列表。
如果你给一项赋值,就会发现这个问题:给定数组,判断是否存在重复元素。
做法:直接遍历(穷举)排序后,比较每个元素和下一个元素哈希表直接遍历会超时。
2的时间复杂度是O(nlogn) 也就是排序的时间复杂度
3的时间复杂度是O(n),但需要额外的O(n)辅助空间。
(穷免费云主机域名举法基本都能想到,但很容易超时,后面只有在穷举法能通过时才列出来。)3比较简单,这里写一下3的做法:给定数组,求其中一个连续数组和的最大值。比较容易想到的是用一个数组记录目前位置最大的值(动态规划)。用 dp[i]
表示以i
位置结尾的连续数组和的最大值。
最后返回dp数组中最大值。题解给出了一种省略dp数组的方法:找出数组中两个数之和等于target
的两数下标。但时间较长,时间复杂度$O(N^2)$官方题解的一个比较巧妙的方式:使用哈希表(字典)
用字典记录出现过的数字的位置。
时间复杂度$O(N)$,空间复杂度$O(N)$两个有序数组,将第二个数组nums2
合并到第一个数组nums1
。1.可以用双指针遍历两个数组:官方版本,更简洁、清楚。更简单粗暴的方式是直接将nums2
追加到nums1
后,进行排序。
及其简单而且效果很好。以数组形式返回两数组的交集(数组形式,返回结果中每个元素出现的次数,应与元素在两个数组中都出现的次数一致)。
排序后双指针遍历。只需要记录下当前最低价,遍历价格过程中,用当前价格-最低价 就是当前可获得的最大利润。另外如果出现了更低的价格,则最低价也要更新。(一个朴素的想法,要是我在最低点买进就好了)
总的最大利润就是这些利润中的最大值。给定一个mx
n的数组,重构为rxc
的数组。
比较简单的想法是把数组拉平为一位数组,然后逐个填充到新的数组中:官方提供了一种直接计算下标的方法:找规律题。可以直接按照生成的规律生成数组。在「杨辉三角」中,每个数是它左上方和右上方的数的和。
判断当前数独是否有效(不需要填充数独)
只要用3个二维数组维护9行、9列、9个九宫格。如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。
A:
利用数组的首行和首列来记录 0 值
另外用两个布尔值记录首行首列是否需要置0到此,相信大家对“Python多维列表中的坑怎么解决”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
这篇“vue路由传参的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“vue路由传参的方法是什么”文章吧。1.通过params实现路由传…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。