算法
文章平均质量分 55
Yulinghu
每天都是新的开始哦!
展开
-
最长公共子串和子序列的Python实现,带图示。
使用矩阵来记录两个子串之间各个字符之间的对应关系。最长子串:矩阵中数字最大的就是最长子串的长度。若对应位置字符相同,则c[i][j] = c[i-1][j-1] + 1 1 def longSubStr(str1,str2): 2 len1 = len(str1) 3 len2 = len(str2) 4 longest,start1,start2 = 0原创 2017-08-18 09:28:32 · 288 阅读 · 0 评论 -
对称二叉树
题目描述请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。思路: 根节点以及其左右子树,左子树的左子树和右子树的右子树相同,左子树的右子树和右子树的左子树相同即可,采用递归. 1 # -*- coding:utf-8 -*- 2 # class TreeNode: 3 # def __init__(sel原创 2017-08-18 09:28:29 · 189 阅读 · 0 评论 -
二叉树的下一个节点
问题:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题目给出的默认代码为: 1 # -*- coding:utf-8 -*- 2 # class TreeLinkNode: 3 # def __init__(self, x): 4 # self.val = x 5 #原创 2017-08-18 09:28:27 · 196 阅读 · 0 评论 -
两个链表的第一个公共结点
问题:输入两个链表,找出他们的第一个公共结点思考:链表的公共结点意味着该结点的value值以及next相同,则两个链表有相同的后缀。 两种方式:1.分别遍历两个链表,计算长度,计算链表差值,长链表先走差值个,短链表开始走,比较两个链表的后缀。2.不计算长度,同时遍历两个链表,当链表中的结点为空时交换链表头指针,追赶,当有公共结点时跳出循环。这里给出方法2代码: 1 # -*- cod原创 2017-08-18 09:28:21 · 160 阅读 · 0 评论 -
调整队形
在幼儿园有n个小朋友排列为一个队伍,从左到右一个挨着一个编号为(0~n-1)。其中有一些是男生,有一些是女生,男生用'B'表示,女生用'G'表示。小朋友们都很顽皮,当一个男生挨着的是女生的时候就会发生矛盾。作为幼儿园的老师,你需要让男生挨着女生或者女生挨着男生的情况最少。你只能在原队形上进行调整,每次调整只能让相邻的两个小朋友交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让原创 2017-08-18 09:28:18 · 233 阅读 · 0 评论 -
丑数
问题:把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。 习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第N个丑数。思路:按顺序把每个丑数放在数组中,求下一个丑数 下一个丑数必定由有数组中的某一个丑数A * 2, B * 3, C * 5 的中的最小值得来。 分析:在数组中必定有一个丑数M2, 在它之前的数 * 2原创 2017-08-18 09:28:15 · 157 阅读 · 0 评论 -
设有n个正整数,将他们连接成一排,组成一个最小的多位整数
Python的两种实现方式: 1.改方式使用了Python自带的函数permutations,排列组合,找出所有组合,然后在列表中找出最小的多位整数,该算法的时间复杂度较大,在牛客网上case的通过率只有20%。import itertoolsdef PrintMinNumber1(numbers): # write code here result = []原创 2017-08-18 11:44:49 · 2138 阅读 · 0 评论