首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 最常见 120 道面试题解析

python 中生成器是什么? 你如何把字符串第一个字母大写? 如何将字符串转换为全小写? 如何在 python 中注释多行? Python 中文档字符串是什么? 目的是什么,不是和运营商?...什么 python 内置类型? NumPy 阵列在(嵌套)Python 列表中提供了哪些优势? 如何将值添加到 python 数组? 如何删除 python 数组值?...数据分析 - Python 面试问题 什么 Python 中 map 函数? python numpy 比列表更好吗? 如何在 NumPy 数组中获得 N 个最大值索引?...检查给定数字n是否为2或0幂 计算将A转换为B所需位数 在重复元素数组中查找两个非重复元素 找到具有相同设置位数下一个较大和下一个较小数字 95.给定n个项目的重量和值,将这些物品放入容量为W背包中...查找所需最小编辑(操作)将'str1'转换为'str2' 给定0和1二维矩阵,找到最大广场,其中包含全部1。 找到两者中存在最长子序列长度。

6.3K20

Go寻找数组最小k个数——全部排序和部分排序

作者 | 陌无崖 转载请联系授权 导语 今天分享数组中寻找k个最小解题思路,分别是全部排序和部分排序,一起来看看吧~ 题目要求 有n个整数,请找出其中最小k个数,要求时间复杂度尽可能低...,可以用如下思路,我们可以选择前k个数默认为最小k个数,存到数组temp中,然后求出temp数组最大值,用这个值去和其它比较,如果发现有比这个数小,就进行交换,然后求出再次求出temp数组最大值...存放在序列起始位置,然后再从剩余排序元素中寻找到最小(大)元素,然后放到已排序序列末尾。...选择排序代码分析 (1)首先我们可以默认第一个最小,让它去和后面的进行比较,在比较过程中,逐渐去寻找最小,记录下标 (2)找到最小后,我们就可以让该第一个进行位置交换 (3)同样我们假设第二第二小...,按照 上面的方式比较,求出第二个数字 (4)和第二个进行交换 .....

1.2K20
您找到你想要的搜索结果了吗?
是的
没有找到

Leecode N个数和合集【1、15、16、18、167、454、923】

三个和问题,可以把第一个当作目标然后在剩余元素中求两个数和,求解两个数方法有上面的 Leetcode 1 哈希表法和下面的 Leetcode 167 双指针法。...类似于上面的 Leetcode 15,四个和转化为三个问题,即先升序排序然后前两层循环分别指向第一、第二个,再使用首尾指针指向第三、第四个,判断和 target 大小关系。...Two Sum II - Input array is sorted 解题思路: 这道题给一个排序数组,求数组中两个数和为 target 索引。...很明显,如果暴力,那么时间复杂度将会是 O(N^4),超时; 进一步,我们可以将数组 D 存放在字典中,键为不同数字,值为不同数字出现次数;然后,三层循环判断前三个负值 tmp 是否在字典中...这道题和上面的 Leetcode 15 很类似,可以先对数组升序排序然后使用首尾指针。但是此题结果可能非常大,因此如果一个一个统计的话, 肯定超时。因此,还需要找到一些规律。

67421

【数据结构与算法】:选择排序与快速排序

1.选择排序 选择排序一种简单直观比较排序算法。该算法基本思想在每一轮中选出当前未排序部分最小(或最大)元素,然后将其放置到未排序序列起始位置,这个过程一直重复直至整个数组排序。...选择排序具体步骤如下: 从数组的当前未排序部分选择最小(或最大)一个元素 将这个最小(或最大)元素与未排序序列第一个元素交换位置 然后从剩余未排序元素中继续这个过程,将每一次找到最小(或最大)...它基本思路可以概括为以下几个步骤: 选择枢轴(Pivot): 快速排序首先从数组中选择一个元素作为枢轴,枢轴选择可以有多种方式,比如总是选择第一个元素、最后一个元素、中间元素,或者采用更复杂策略中值法...为了简单起见,我们选择数组第一个元素作为枢轴。实际应用中可能会使用更复杂选择方法,随机选择或三中值法,以避免最坏情况性能下降。...这样做目的尽量避免选择最小或最大元素作为枢轴,因为这会产生不平衡分区。

8410

看图学NumPy:掌握n维数组基础知识点,看这一篇就够了

因此,常见做法定义一个Python列表,对它进行操作,然后再转换为NumPy数组,或者用np.zeros和np.empty初始化数组,预分配必要空间: ?...它不受舍入错误影响,并始终生成要求元素数。 出于测试目的,通常需要生成随机数组NumPy提供随机整数、均匀分布、正态分布等几种随机形式: ?...矩阵运算 NumPy中曾经有一个专用类matrix,但现在已弃用,因此下面将交替使用矩阵和2D数组两个词。 矩阵初始化语法与向量相似: ? 这里需要双括号,因为第二个位置参数为dtype保留。...为了使用任意维通用表示法,NumPy引入了axis概念:axis参数实际上所讨论索引数量:第一个索引axis=0,第二个索引axis=1,等等。...第一个索引平面的编号,然后才是在该平面上移动: ? 这种索引顺序很方便,例如用于保留一堆灰度图像:这a[i]引用第i个图像快捷方式。 但是此索引顺序不是通用

6K20

排序】插入排序与选择排序详解

直接选择排序 例如:定义一个数组 int a[6] = { 9,5,7,2,3,6 }; 首先:遍历第一趟数组,找出数组最小值,与第一个数据交换 然后遍历第二趟数组,继续找出最小值,与第二个数据交换...然后遍历第三趟数组,继续找出最小值,与第三个数据交换 如此重复,然后当i等于n-1次选择时排完序,最后一个也有序,排序完成。...,中找到最小与0下标的进行交换,接着在1 ~ n - 1下标中找最小值与1下标交换,然后下次就是2 ~ n - 1找最小值与2交换,每次找到最小值丢到最前面,接着交换,随即下标3,4,5…直到n...**实际中我们玩扑克牌时,就用了插入排序思想 动图: 步骤: 从第一个元素开始,该元素可以认为已经被排序 取出下一个元素,在已经排序元素序列中从后向前扫描 如果该元素(已排序)大于新元素...插入排序实现 思路:第一个数天然有序,第二个与代排有序序列第一个比较,小与插入,第三个与前面两个元素比较,依次比较前面元素,然后比较完依次将后面元素依次插入到前面有序序列中,直到序列停止。

8610

NumPy 笔记(超级全!收藏√)

所以一维数组就是 NumPy轴(axis),第一个轴相当于是底层数组第二个底层数组数组。而轴数量——秩,就是数组。  很多时候可以声明 axis。...ndarray.shape  ndarray.shape 表示数组维度,返回一个元组,这个元组长度就是维度数目,即 ndim 属性(秩)。比如,一个二维数组,其维度表示"行数"和"列"。 ...对于有符号整数,取该二进制补码,然后 +1。二进制,最高位为0表示正数,最高位为 1 表示负数。 ...numpy.power()  numpy.power() 函数将第一个输入数组元素作为底数,计算它与第二个输入数组中相应元素幂。 ...msort、sort_complex、partition、argpartition  函数描述msort(a)数组第一个排序,返回排序数组副本。

4.6K30

数据科学 IPython 笔记本 9.10 数组排序

所有这些都是完成类似任务方法:对列表或数组排序。例如,简单选择排序重复查找列表中最小值,并进行交换直到列表有序。...幸运,Python包含内置排序算法,这些算法比刚刚展示任何简单算法都高效得多。 我们将首先查看 Python 内置函数,然后查看 NumPy 中包含,并针对 NumPy 数组优化例程。...print(i) # [1 0 3 2 4] 此结果第一个元素给出最小元素索引,第二个值给出第二小元素索引,依此类推。...然后,如果需要,可以使用这些索引(通过花式索引)构造有序数组: x[i] # array([1, 2, 3, 4, 5]) 沿行或列排序 NumPy 排序算法一个有用特性,能够使用axis参数来排序多维数组特定行或列...部分排序:分区 有时我们对排序整个数组不感兴趣,但只想在数组找到k个最小值。 NumPy 在np.partition函数中提供了它。

1.8K10

数据科学篇| Numpy使用(一)

ndarray 对象 ndarray 实际上多维数组含义。在 NumPy 数组中,维称为秩(rank),一维数组秩为 1,二维数组秩为 2,以此类推。...你可以先把一个数组作为一个元素,然后嵌套起来,比如示例 b 中 [1,2,3] 就是一个元素,然后 [4,5,6][7,8,9] 也是作为元素,然后把三个元素再放到 [] 数组里,赋值给变量 b。...这里做个笔记: 当asix=-1时按照数组最后一个轴来排序其实就是按数组最内部数据进行排序 例子:三维数组 第一个轴0: 这三个比较大小 [[ 0 -2 -3]...0和0对比因为第一个0和第二个0索引(0,0,0)和(1,0,0)分别只有1发生变化。...如果按轴1排序,那要保证轴0和轴2相等,那就是 [0 3 0] [-2,1,1] [-3,5,9] 之间排序,也就是第一个3x3数组竖下来排序

1.6K41

Python:Numpy详解

NumPy中,每一个线性数组称为一个轴(axis),也就是维度(dimensions)。比如说,二维数组相当于是两个一维数组,其中第一个一维数组中每个元素又是一个一维数组。...所以一维数组就是 NumPy轴(axis),第一个轴相当于是底层数组第二个底层数组数组。而轴数量——秩,就是数组。  很多时候可以声明 axis。...numpy.power() numpy.power() 函数将第一个输入数组元素作为底数,计算它与第二个输入数组中相应元素幂。 ...numpy.amax() 用于计算数组元素沿指定轴最大值。  numpy.ptp() numpy.ptp()函数计算数组中元素最大值与最小差(最大值 - 最小值)。 ...如果第一个参数复数,那么它共轭复数会用于计算。 如果参数多维数组,它会被展开。  numpy.inner() numpy.inner() 函数返回一维数组向量内积。

3.5K00

这或许是东半球分析十大排序算法最好一篇文章

冒泡排序1 首先比较第一个第二个大小,我们发现 2 比 8 要小,那么保持原位,不做改动。位置还是 8,2,5,9,7 。 指针往右移动一格,接着比较: ?...选择排序思路这样:首先,找到数组最小元素,拎出来,将它和数组第一个元素交换位置,第二步,在剩下元素中继续寻找最小元素,拎出来,和数组第二个元素交换位置,如此循环,直到整个数组排序完成...选择排序动画演示 图解选择排序 我们还是以[ 8,2,5,9,7 ]这组数字做例子。 第一次选择,先找到数组最小数字 2 ,然后第一个数字交换位置。...选择排序1 第二次选择,由于数组第一个位置已经有序,所以只需要查找剩余位置,找到其中最小数字5,然后数组第二个位置元素交换。 ?...首先,将数组构建成堆。 ? 堆排序1 既然构建成堆结构了,那么接下来,我们取出堆顶数据,也就是数组第一个 9 ,取法数组第一位和最后一位调换,然后数组排序范围 -1。 ?

39620

这或许是东半球分析十大排序算法最好一篇文章

冒泡排序1 首先比较第一个第二个大小,我们发现 2 比 8 要小,那么保持原位,不做改动。位置还是 8,2,5,9,7 。 指针往右移动一格,接着比较: ?...选择排序思路这样:首先,找到数组最小元素,拎出来,将它和数组第一个元素交换位置,第二步,在剩下元素中继续寻找最小元素,拎出来,和数组第二个元素交换位置,如此循环,直到整个数组排序完成...选择排序动画演示 ▌图解选择排序 我们还是以[ 8,2,5,9,7 ]这组数字做例子。 第一次选择,先找到数组最小数字 2 ,然后第一个数字交换位置。...选择排序1 第二次选择,由于数组第一个位置已经有序,所以只需要查找剩余位置,找到其中最小数字5,然后数组第二个位置元素交换。 ?...首先,将数组构建成堆。 ? 堆排序1 既然构建成堆结构了,那么接下来,我们取出堆顶数据,也就是数组第一个 9 ,取法数组第一位和最后一位调换,然后数组排序范围 -1。 ?

43010

这或许是东半球分析十大排序算法最好一篇文章

冒泡排序1 首先比较第一个第二个大小,我们发现 2 比 8 要小,那么保持原位,不做改动。位置还是 8,2,5,9,7 。 指针往右移动一格,接着比较: ?...选择排序思路这样:首先,找到数组最小元素,拎出来,将它和数组第一个元素交换位置,第二步,在剩下元素中继续寻找最小元素,拎出来,和数组第二个元素交换位置,如此循环,直到整个数组排序完成...选择排序动画演示 图解选择排序 我们还是以[ 8,2,5,9,7 ]这组数字做例子。 第一次选择,先找到数组最小数字 2 ,然后第一个数字交换位置。...选择排序1 第二次选择,由于数组第一个位置已经有序,所以只需要查找剩余位置,找到其中最小数字5,然后数组第二个位置元素交换。 ?...首先,将数组构建成堆。 ? 堆排序1 既然构建成堆结构了,那么接下来,我们取出堆顶数据,也就是数组第一个 9 ,取法数组第一位和最后一位调换,然后数组排序范围 -1。 ?

54750

冒泡排序法c语言代码_用冒泡法对数组a进行排序

大家好,又见面了,我你们朋友全栈君 选择法排序 选择法排序指:如果要把一个数组从小到大排列,那么就从该数组中依次选择最小数字来排序。...从第一个数字开始,将第一个数字与数组中剩下数字中最小那一个交换位置,然后第二个数字与剩下数字中最小那个交换位置,以此类推,直到最后一个数字。...计算量固定。对于较大n运算速度较慢。 冒泡法排序 冒泡法排序指:在排序时,每次比较数组相邻两个数组元素值,将较小排在较大前面。...交换法排序 交换法排序将每一位与它之后所有数字对比,如果发现比它小数字,那么立即交换这两个数字位置,连续向后对比直至最后一个然后再使用第二个同样依次向后对比,直到排序完成。...然后数组中第三个数字,与第二个数字和第一个数字对比,以此类推。

1.4K20

CC++ 常见数组排序算法

排序过程采用嵌套两个循环,外层循环(x 循环)控制每一轮遍历,内层循环(y 循环)用于比较相邻元素并进行交换。 具体实现步骤: 外层循环(x 循环)遍历数组,从数组第一个元素到倒数第二个元素。...它基本思想通过不断选择数组中未排序部分最小元素,并将其与未排序部分第一个元素交换位置,从而逐步完成整个数组排序。...具体步骤如下: 初始化: 遍历整个数组,假设当前位置为最小位置(minimum)为起始位置。 查找最小值: 在未排序部分中,从当前位置下一个元素开始,找到比当前最小值更小元素位置。...具体步骤如下: 初始化: 数组第一个元素被认为排序部分,从数组第二个元素开始,将其视为未排序部分。 逐个插入: 遍历未排序部分元素,逐个将其插入到已排序部分合适位置。...归并排序(Merge Sort)算法,归并排序一种分治算法,其基本思想数组分成两个部分,对每个部分进行递归排序然后将两个有序数组合并成一个有序数组

36910

NumPy 1.26 中文文档(四十一)

numpy.org/doc/1.26/reference/generated/numpy.sort_complex.html numpy.sort_complex(a) 使用实部首先,然后虚部对复数数组进行排序...side{‘left’,‘right’},可选 若为‘left’,则给出找到第一个适当位置索引。若为‘right’,则返回最后一个这样索引。...如果为 True,则允许中间计算修改输入数组 a,以节省内存。在这种情况下,此函数完成后输入 a 内容未定义。 methodstr,可选。 此参数指定用于估计百分位方法。...如果给出多个百分位,结果第一个轴对应于百分位。其他轴在 a 缩减后剩下轴。如果输入包含小于 float64 整数或浮点数,则输出数据类型为 float64。...注 给定长度为 n 向量 V,V 第 q 个百分位排序 V 最小值和最大值之间,从最小值到最大值q/100 处值。

10410

NumPy基础

将布尔数组作为掩码    七、花哨索引八、数组排序 [ NumPy version: 1.18.1 ]  import numpy as np 一、创建数组  # 1.从python列表创建数组 #...(标量与数组相加)  广播规则(适用任意二进制通用函数):  如果两个数组维度数不相同,那么小维度数组形状将会在最左边补1。...0, 1, 2]) col = np.array([2, 1, 3]) X[row, col]                 #第一个索引指行,第二个索引指列,即[0,2],[1,1],[2,3] X...(X, axis=1)     #每一行排序 部分排序:分隔  不对整个数组进行排序,只需找到数组中第K小值。 ...np.partition函数输入数组和数字K,输出一个新数组,最左边K个数最小K个值,往右原始数组剩下值,在这两个分隔区间中元素都是任意排列

1.2K30

排序算法:冒泡排序和选择排序内容,区别与优缺点。

到这里呢,冒泡排序就结束了;下面选择排序,总结一句话就是(划重点):从第一个位置开始比较,找出最小,和第一个位置互换,开始下一轮。...从图可以看出,第一轮比较,比较了4轮,找出了最小数1,与第一个位置数字进行了换位;    第二轮排序开始时数组已经变成了{1,6,5,3,2}; ?...从图可以看出,第二轮比较,比较了3次,确定剩余数中最小数为2,与第二个位置交换。   第三轮排序开始时数组已经变成了{1,2,5,3,6}; ?...从图可以看出,第三轮比较,比较了2次,确定了剩余数中最小3,与第三个位置互换位置。  第四轮排序开始时数组已经变成了{1,2,3,5,6}; ?...(1)冒泡排序比较相邻位置两个数,而选择排序按顺序比较,找最大值或者最小值; (2)冒泡排序每一轮比较后,位置不对都需要换位置,选择排序每一轮比较都只需要换一次位置; (3)冒泡排序通过数去找位置

2.5K40

算法-旋转数组最小数字

题目 输入一个递增排序数组一个旋转,输出旋转数组最小元素。例如数组{3,4,5,1,2}为数组{1,2,3,4,5}一个旋转,该数组最小值为1。...上图中一个原数组与旋转数组,我们可以发现,旋转数组有两个排序子序列{3,4,5}和{1,2},我们要找数值1(最小值)两个子序列分界值,也是第二个子序列第一个值。...首先让两个指针分别指向旋转数组第一个位置(0)和最后一个位置(4),此时两个指针中间5,5>3&&5>2,5比p1指向数值(3)大,这说明中间数值(5)在第一个子序列{3,4,5}中,那么第二个子序列一定在...5右面,最小数字第二个子序列第一个数值,那么也一定在5后面,此时为了缩小查找范围,构建子序列,就可以把p1调整到中间位置(2): ?...因为,p1永远在指向第一个子序列,p2永远再指向第二个子序列,而第二个子序列中最大都会比第一个子序列最小还要小,所以永远在和p1比大,和p2比小!!!

64550

RNG输了,但我们不能输

案例1 题目 去哪儿/一点咨讯 手写代码题: 对于一个排序数组,无重复数字,给定一个target,如果这个数target存在,那么返回它出现下标,如果不存在返回-1。...,但是当数据量非常大,比如说nums这个数目的长度int最大值2147483647,而我们要找刚好在数组右半部分,那么left大于1/2(int 最大值),right值大于1/2(int最大值...思路:递归思路,就是每次找每个节点最小深度,最开始去寻找叶子节点最小深度,然后叶子节点最小深度知道了以后,就得到了叶子节点父亲节点最小深度,这样一层层回溯过程就把每个节点所代表二叉树最小深度知道了...我恍然大悟,我说咋出这么简单题,原来考察在大数据情况下最优解,怪就怪在我自我膨胀了,没认真对待面试官出这道题。...如何改进 我上述代码在小数据情况下OK,在大数据情况下,需要遍历时候,按照层次遍历思路,找到第一个叶子节点,然后就结束遍历了,无需再进行遍历,因为题目最小深度,所以已经找到了,就结束返回结果就完事了

37120
领券