![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
YangHongChao001
机器学习,深度学习,算法工程师
展开
-
最长值不超过某定值子数组(长度相等字符串差值不超过定值)(华为面试题)
### 两个相同长度的字符串,求同位置相减后的绝对值加起来小于等于某个值的连续最长子串的长度def func(): a = input().strip() b = input().strip() c = int(input().strip()) left = 0 right = 1 res = 0 dif = [abs(ord(a[i])-ord(b[i])) for i in range(len(a))] if len(dif) == 1 and sum(dif) <= c:.原创 2021-10-15 11:47:48 · 133 阅读 · 0 评论 -
英文单词接龙(华为笔试题)
### 单词接龙,单词首字母是上一个单词结尾字母,如果候选词有多个,则选最长的,若长度相同,按字典序选靠前的def longest_words(words): tmp_words = [[len(w), w] for w in words] tmp_words = sorted(tmp_words, key=lambda x: (-1 * x[0], x[1])) new_words = [w[1] for w in tmp_words] return new_word.原创 2021-10-15 11:45:10 · 1301 阅读 · 0 评论 -
n个数字取m个的组合数
对于这个问题有两种版本,n个元素互不相同,n个元素有重复。有重复用集合之类的方法去重即可。因此我们解决简单版本假设n个元素互不相同。,有两种方法解决该问题,一种是用回朔法,用temp表示临时的一个m组合,用递归的方法对于temp中的元素弹出加入。第二种方法是借助数据结构栈。emmm: 其实应该是同一种方法,第一种回朔法用了系统的栈空间,第二种用了自己建立的栈空间。相比较而言第二种算法的...原创 2019-05-01 12:47:56 · 1702 阅读 · 0 评论 -
将n根绳子分为最长的m根
问题:有n根长度不等的绳子,允许剪短不允许拼接,将其分为等长的m根,求m根绳子的最大长度?考虑用动态规划的方法:设为将分为个的最大长度。则有以下动态转移方程:Python代码如下:#coding: utf-8def maximum_rope(arr, m): n = len(arr) d = [[0 for i in range(m+1)] f...原创 2019-04-30 21:48:30 · 823 阅读 · 0 评论 -
快速排序
快速排序的思想是随机找序列中的一个数,将比他小的数字放在左边,比他大的数字放在右边,从而将序列分为两组,递归的对左右和右边继续执行此过程,直到子序列中再没有元素,或者只有一个元素时停止,下面的算法都选择最后一个元素作为随机选取的元素。 def partition(A, left, right): povot = A[right] tail = left for i ...原创 2018-08-08 21:32:32 · 140 阅读 · 0 评论 -
链表删除重复元素
问题一: 删除链表中的重复元素,但是保留重复元素的第一个元素 class Node(): def __init__(self,x): self.value = x self.next_p = None 方法一:删除重复元素的后一个,保留第一个def delete_dupicate(A): p = A ...原创 2018-08-11 19:24:49 · 1632 阅读 · 0 评论 -
最大回文子串的长度
回文串算法:manacher:将每个字符首位加“#”,字符串首加“$”,返回的结果为一个数组,数组的偶数为对应元素所在的回文串长度、b = "abcdebeabbaf"c = "".join(["$#"] + [ i +"#" for i in b])def Manacher(a): size = len(a) p = np.array([0]*size) ...原创 2018-08-14 19:07:34 · 261 阅读 · 0 评论 -
python 字符串(y有重复)全排列算法
def Permutation(str, beg, endl): if beg == endl - 1: print(str) return for i in range(beg, endl): if str[i] in str[beg:i]: continue str[i], str[be...原创 2018-08-02 11:06:36 · 2997 阅读 · 0 评论 -
链表的部分翻转
对于一个链表,将他从第m个位置到第n个位置翻转如 1 ——>2------->3---------->4------->5翻转为1-------->3--------->2-------->4------->5class Node(): def __init__(self,x): self.value = x ...原创 2018-08-10 23:06:26 · 494 阅读 · 0 评论 -
0-1背包问题
0-1背包问题:一个背包能够容纳W重的物品(W为整数),现有n个物品,每个物品有其自身重量W_i和价值V_i。选择某些物品装入背包使得装的物品的价值最大。利用动态规划求解,将背包的容量单位化,即从0----到W,分别能装的最大价值,将物品也从i开始表示物体为在前i个中选择。则得到状态转移方程f[i][j] = max{f[i-1][j], f[i-1][j-weight[i]]+value...原创 2018-08-14 08:37:27 · 318 阅读 · 0 评论 -
Python的时间数据类型
9.1、获取当前时间,例如:import time, datetime;localtime = time.localtime(time.time())#Local current time : time.struct_time(tm_year=2014, tm_mon=3, tm_mday=21, tm_hour=15, tm_min=13, tm_sec=56, tm_wday=4, tm_yd...翻译 2018-03-19 10:45:43 · 4802 阅读 · 0 评论 -
Python数据类型转换
有时候需要对数据内置的类型进行转换,只要将数据类型作为函数名即可。 以下几个内置的函数可以执行数据类型之间的转换, 这些函数返回一个新的对象,表示置换的值。 常用的类型转换函数有一下几种。int(x)将x转换为一个整数long(x)将x转换为一个长整数float(x)将x转换为一个浮点数complex(real)创建一个复数str(x)将x装换为字符型repr(x)将对象x转换为表达式字符...原创 2018-03-19 10:44:36 · 273 阅读 · 0 评论 -
Python集合方法
集合(set)是一个无序不重复元素的序列。基本功能是进行成员关系测试和删除重复元素。可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。A set object is an unordered collection of distinct hashable objects. Common uses in...翻译 2018-03-19 10:43:58 · 274 阅读 · 0 评论 -
Python字典方法
关于Python的深复制和浅复制, 字典列表集合可变容器模型, a = b 都是潜复制,当将b[i]修改,则a也被修改,但是若对b重新赋值(及将b指向新的对象), 则a 与b 将不同。而元组字符串不可变容器模型没有copy方法。 a = b.copy()是深拷贝, copy模块里有copy和deepcopy,copy是浅拷贝,deepcopy是深拷贝,import copy a = co...原创 2018-03-19 10:43:13 · 561 阅读 · 0 评论 -
python元组处理
元组是列表的简化版本, 不能二次赋值,类似于只读列表, 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。 比如 a = ([2, 3],4)a[0][1] = 5特别注意元组包含0个元素和一个元素时a = ( )b = ('a',) 1、与字符串一样,元组的元素不能修改。2、元组也可以被索引和切片,方法一样。3、注意构造包含0或1个元素的元组的特殊语法规则。4、元组也可...原创 2018-03-19 10:42:31 · 1043 阅读 · 0 评论 -
Python元组处理
元组是列表的简化版本, 不能二次赋值,类似于只读列表, 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。比如a = ([2, 3],4)a[0][1] = 5特别注意元组包含0个元素和一个元素时a = ( )b = ('a',)1、与字符串一样,元组的元素不能修改。 2、元组也可以被索引和切片,方法一样。 3、注意构造包含0...原创 2019-05-01 22:06:51 · 458 阅读 · 0 评论 -
Python列表处理
(1)list 列表操作包含以下函数。 比较两个列表的函数, 以前的版本有cmp方法, 3. 之后取消了,但是可以直接用“>”,“<”, 或者“=”, 来直接比较,这种方法对于字符串也是适用的len(list):列表元素个数,也适用于元组,字符串max(list):列表元素的最大值, 也适用于元组,字符串min(list):列表元素的最小值, 也适用于元组,字符串list(...原创 2018-03-18 17:28:31 · 251 阅读 · 0 评论 -
Python格式化输出
关于字符串,列表,元组元素的取出: a[x::y]若y大于0表示步长且是从头向尾取,首位为x位,若x缺省,则从0开始,若为-1,则只能取最后一位,即使y大于0,跑出迭代对象的尾端也没影响;若y小于0表示,从后往前取,y的绝对值表示步长,x仍然表示第一个元素位置。若a[::-1]则表示原来的。。。取反。Python转义字符在需要在字符中使用特殊字符时,python用反斜杠(\)转义字符。如下表:转义...原创 2018-03-18 17:27:44 · 609 阅读 · 0 评论 -
python语言else的用法
循环使用 else 语句在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。实例#!/usr/bin/python# -*- coding: UTF-8 -*- for num in range(10,20): # 迭代 ...原创 2018-03-18 17:26:41 · 981 阅读 · 0 评论