python数组

LeetCode算法题:34. 在排序数组中查找元素的第一个和最后一个位置

匿名 (未验证) 提交于 2019-12-02 23:52:01
题目描述如下: 给定一个按照升序排列的整数数组 nums,和一个目标值 target。找出给定目标值在数组中的开始位置和结束位置。 示例 1: 输入: nums = [5,7,7,8,8,10], target = 8 输出: [3,4] 输入: nums = [5,7,7,8,8,10], target = 6 输出: [-1,-1] 贴代码: C++:(常规的暴力法,易于理解) class Solution { public: vector<int> searchRange(vector<int>& nums, int target) { vector<int> result; int i=0; for(int i=0;i<nums.size();i++){ if(nums[i]==target&&result.size()==2){ result.pop_back(); result.push_back(i); } else if(nums[i]==target){ result.push_back(i); } } if(result.size()==1){ result.push_back(result[0]); } if(result.empty()==true){ result.push_back(-1); result.push_back(-1); } return

LeetCode 151:给定一个字符串,逐个翻转字符串中的每个单词 Reverse Words in a String

匿名 (未验证) 提交于 2019-12-02 23:47:01
公众号:爱写bug(ID:icodebugs) 翻转字符串里的单词 Given an input string, reverse the string word by word. 示例 1: 输入: "the sky is blue" 输出: "blue is sky the" 示例 2: 输入: " hello world! " 输出: "world! hello" 解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 示例 3: 输入: "a good example" 输出: "example good a" 解释: 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 进阶: 请选用 C 语言的用户尝试使用 O (1) 额外空间复杂度的原地解法。 Note: A word is defined as a sequence of non-space characters. Input string may contain leading or trailing spaces. However, your reversed string should not

5. 最长回文子串

匿名 (未验证) 提交于 2019-12-02 23:43:01
s s 1000 1 : "babad" : "bab" : "aba" 2 : "cbbd" : "bb" 解法 1:中心扩散 思路很简单:遍历每一个索引,以这个索引为中心,往两边扩散,看最多能扩散多远。具体的做法是利用“回文串”中心对称的特点,在枚举子串的过程中进行剪枝。要注意一个细节:回文串的长度可能是奇数,也可能是偶数。 我们完全可以设计一个方法,兼容以上两种情况: 1、如果传入重合的索引编码,进行中心扩散,此时得到的最长回文子串的长度是奇数; 2、如果传入相邻的索引编码,进行中心扩散,此时得到的最长回文子串的长度是偶数。 Python: class Solution: def longestPalindrome(self, s): size = len(s) if size == 0: return '' # 至少就是 1 longest_palindrome = 1 longest_palindrome_str = s[0] for i in range(size): # 返回当前最长回文子串、和这个最长回文子串的长度 palindrome_odd, odd_len = self.__center_spread(s, size, i, i) palindrome_even, even_len = self.__center_spread(s, size, i, i +

一分钟看懂Python中Numpy.nonzero()函数

匿名 (未验证) 提交于 2019-12-02 22:56:40
Numpy.nonzero()返回的是数组中,非零元素的位置。如果是二维数组就是描述非零元素在几行几列,三维数组则是描述非零元素在第几组中的第几行第几列。 举例如下: 二维数组: a = np.array([[1, 0, 3], [0, 2, 0], [0, 0, 9]]) b = np.nonzero(a) print(b) 结果为:(array([0, 0, 1, 2], dtype=int64), array([0, 2, 1, 2], dtype=int64)) 第一个array描述行,第二个array描述列,我们把结果转变下以便理解: array[0, 0, 1, 2] array[0, 2, 1, 2] 我们看到第一个非零元素1,在0行0列,对应为加粗数字: array[ 0 , 0, 1, 2] array[ 0 , 2, 1, 2] 第二个非零元是3,在0行2列,对应: array[0, 0 , 1, 2] array[0, 2 , 1, 2] 第三个非零元素是2,在1行1列,对应: array[0, 0, 1 , 2] array[0, 2, 1 , 2] 第四个非零元素是9,在2行2列,对应: array[0, 0, 1, 2 ] array[0, 2, 1, 2 ] 再举一个三维数组的列子: a = np.array([[[0,1],[2,0]],[[0,3]

python的numpy总结(转)

匿名 (未验证) 提交于 2019-12-02 22:54:36
ת:https://blog.csdn.net/danieljianfeng/article/details/46894185 ones函数 >>> import numpy as np >>> a=np.ones( 3 );a array([ 1. , 1. , 1. ]) >>> b=np.ones(( 3 , 2 ));b array([[ 1. , 1. ], [ 1. , 1. ], [ 1. , 1. ]]) 1 2 3 4 5 6 7 8 zeros函数 >>> c=np.zeros( 3 ) >>> c array([ 0. , 0. , 0. ]) >>> d=np.zeros(( 2 , 3 ));d array([[ 0. , 0. , 0. ], [ 0. , 0. , 0. ]]) #d=np.zeros(2,3)会报错,d=np.zeros(3,dtype=int)来改变默认的数据类型 1 2 3 4 5 6 7 8 eye&identity函数 >>> e=np.eye( 3 );e array([[ 1. , 0. , 0. ], [ 0. , 1. , 0. ], [ 0. , 0. , 1. ]]) >>> e=np.eye( 3 , 2 );e array([[ 1. , 0. ], [ 0. , 1. ], [ 0. , 0. ]]) >>>

python的scipy.misc.toimage 将numpy数组转为图片

匿名 (未验证) 提交于 2019-12-02 22:51:30
scipy.misc. ( ARR , 高= 255 , 低= 0 , 的Cmin =无 , Cmax为无 , PAL =无 , 模式=无 , channel_axis =无 ) [Դ] 采取一个numpy数组并返回一个PIL图像。 PIL图像的模式取决于阵列形状以及 pal mode 关键字。 对于二维数组,如果 pal 是给出RGB值(从0到255)的有效(N,3)字节数组,则 mode ='P' ,否则 mode ='L' ,除非mode给出为'F '或'I',在这种情况下,将创建一个浮点数和/或整数数组。 对于三维数组, channel_axis 参数 ָʾ 数组的 哪个维度保存通道数据。 对于三维数组,如果其中一个维数为3,默认情况下,模式为“RGB”,如果选择,则为“YCbCr”。 numpy数组必须是二维或三维的。 文章来源: python的scipy.misc.toimage 将numpy数组转为图片

python刷leetcode题目(1)

匿名 (未验证) 提交于 2019-12-02 22:51:30
1、从排序数组中删除重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 给定数组 nums = [1,1,2] , 函数应该返回新的长度 2 , 并且原数组 nums 的前两个元素被修改为 1 , 2 。 你不需要考虑数组中超出新长度后面的元素。 给定 nums = [0,0,1,1,1,2,2,3,3,4] , 函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0 , 1 , 2 , 3 , 4 。 你不需要考虑数组中超出新长度后面的元素。 代码如下: class Solution: def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ i = 0 while i < len(nums) -1: if nums[i] == nums[i+1]: nums.remove(nums[i]) else: i += 1 return len(nums) 2、买卖股票的最佳时机 II i i 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意: 你不能同时参与多笔交易

python刷leetcode题目(1)

匿名 (未验证) 提交于 2019-12-02 22:51:30
1、从排序数组中删除重复项 给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。 不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 给定数组 nums = [1,1,2] , 函数应该返回新的长度 2 , 并且原数组 nums 的前两个元素被修改为 1 , 2 。 你不需要考虑数组中超出新长度后面的元素。 给定 nums = [0,0,1,1,1,2,2,3,3,4] , 函数应该返回新的长度 5 , 并且原数组 nums 的前五个元素被修改为 0 , 1 , 2 , 3 , 4 。 你不需要考虑数组中超出新长度后面的元素。 代码如下: class Solution: def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ i = 0 while i < len(nums) -1: if nums[i] == nums[i+1]: nums.remove(nums[i]) else: i += 1 return len(nums) 2、买卖股票的最佳时机 II i i 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。 注意: 你不能同时参与多笔交易

Python中reshape函数参数-1的意思

匿名 (未验证) 提交于 2019-12-02 22:51:30
numpy.reshape(a, newshape, order='C')[source],参数`newshape`是啥意思? 大意是说,数组新的shape属性应该要与原来的配套,如果等于-1的话,那么Numpy会根据剩下的维度计算出数组的另外一个shape属性值。 z = np . array ([[ 1 , 2 , 3 , 4 ], [ 5 , 6 , 7 , 8 ], [ 9 , 10 , 11 , 12 ], [ 13 , 14 , 15 , 16 ]]) z.reshape(-1) z . reshape ( - 1 ) array ([ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 , 16 ]) z . reshape ( - 1 , 1 ) array ([[ 1 ], [ 2 ], [ 3 ], [ 4 ], [ 5 ], [ 6 ], [ 7 ], [ 8 ], [ 9 ], [ 10 ], [ 11 ], [ 12 ], [ 13 ], [ 14 ], [ 15 ], [ 16 ]]) z.reshape(-1, 2) newshape等于-1,列数等于2,行数未知,reshape后的shape等于(8, 2) z . reshape ( - 1 , 2 ) array ([[

刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数

匿名 (未验证) 提交于 2019-12-02 22:51:30
你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 解析: 这个列表里面两个数字相加等于这个预期的数字的下标。 代码思路: 4. 这里可能返回多个,我们默认选择第一组。 实现代码: class Solution(): def twoSun(self,nums,target): for i in range(len(nums)): for j in range(len(nums)): if nums[i]+nums[j] ==target and i !=j: return [i,j] 那么我们先来个简单的测试,去测试一下: if __name__=="__main__": solution=Solution() print(solution.twoSun([1,2,3,4,5,6],5)) 执行打印结果: 那么我来看下给定的list里面是否是对的。 我们知道python的list是从0开始计数的,即0的下标的元素就是list的里面第一个元素,然后一次类推。 我们可以看到下标是0 和3的元素分别是1和4,1+4=5 符合预期,认为代码通过。 下面我们做下单元测试: class TestCase(unittest.TestCase): def setup(self): pass def tearDown(self) -> None: pass def