常用算法
chimuuu
https://github.com/chimuuu
展开
-
求两个字符串的最长公共子串 python实现
# coding:utf-8'''求两个字符串的最长公共子串思想:建立一个二维数组,保存连续位相同与否的状态'''def getNumofCommonSubstr(str1, str2): lstr1 = len(str1) lstr2 = len(str2) record = [[0 for i in range(lstr2+1)] for j in ran原创 2017-08-16 14:56:18 · 11976 阅读 · 0 评论 -
最大矩形面积
# usr/bin/env python# _*_ coding:utf-8 _*_'''给定一组非负整数组成的数组h,代表一组柱状图的高度,其中每个柱子的宽度都为1。 在这组柱状图中找到能组成的最大矩形的面积(如图所示)。 入参h为一个整型数组,代表每个柱子的高度,返回面积的值。输入例子1:6 #个数2 1 5 6 2 3输出例子1:1原创 2017-08-29 21:09:48 · 1935 阅读 · 0 评论 -
拼凑钱币
# usr/bin/env python# _*_ coding:utf-8 _*_'''给你六种面额 1、5、10、20、50、100 元的纸币,假设每种币值的数量都足够多,编写程序求组成N元(N为0~10000的非负整数)的不同组合的个数。 动态规划:dp[j] = dp[j] + dp[j-coins[i]], 条件是:j>coins[i]'''def GetNum(N)原创 2017-08-29 21:07:18 · 1147 阅读 · 0 评论 -
8个常用排序算法 之 python实现
1、冒泡#!/usr/bin/env# coding:utf-8# 排序算法之冒泡排序(稳定排序)# 时间复杂度为 o(n, n^2)# 基本思想是:# 两两比较相邻元素,如果反序则交换,直到没有反序的记录为止class Solution: def bubble(self, alist): # L = len(alist)原创 2017-07-28 09:25:40 · 437 阅读 · 0 评论 -
素数筛实现素数的快速筛选
# usr/bin/env python# _*_ coding:utf-8 _*_'''素数筛(Sieve of primes):给定一个较大值n,寻找1~n中的所有素数,并把它打印出来。判断一个数m是否是素数,需要花费O(√n)时间。当然是遍历并判断的话,需要花费O(n√n)时间,生产者实现也很简单:1. 首先生成一个bool列表表示该index的数是否是素数;2. 显然0原创 2017-09-13 10:23:37 · 737 阅读 · 0 评论 -
连续子数组最大和
# coding:utf-8def getResult(num, array): if not num or not array: return None s_um = array[0] max_sum = array[0] for i in range (1 , len (array)): # 判断贡献情况原创 2017-08-26 16:22:02 · 333 阅读 · 0 评论 -
二叉树的四种遍历方式 (前序,中序,后序,层序遍历 python实现)
# -*- coding:utf-8 -*-'''操作给定的二叉树,输出二叉树的三种遍历结果前序遍历:根左右 8 6 5 7 10 9 11 第一位是根节点中序遍历:左根右 5 6 7 8 9 10 11 中间一位是根节点后续遍历:左右根 5 7 6 9 10 10 8 最后一位是根节点输入描述:二叉树 8 / \原创 2017-08-22 16:23:47 · 627 阅读 · 0 评论 -
任意进制转换 python实现
# coding:utf-8'''描述:给定一个十进制数M,以及需要转换的进制数N。将十进制数M转化为N进制数输入: 4 2输出: 100@author:chimuuu'''import mathdef translate(num, base_num): if num < base_num: return str(num) else:原创 2017-08-16 16:46:26 · 3279 阅读 · 0 评论 -
求N!中0的个数 python实现
# -*- coding:utf-8 -*-'''求N!中0的个数思路:分析: 对N进行质因数分解 N=2^x * 3^y * 5^z...,由于10 = 2*5,所以末尾0的个数只和x与z有关, 每一对2和5相乘可以得到一个10,于是末尾0的个数=min(x,z)。在实际中x是远远大于z的,所以我们只要求出z的值即可。 根据公式 z = N/5 + N/原创 2017-08-16 16:41:23 · 1672 阅读 · 0 评论 -
检查链表是否为回文 python实现
# -*- coding:utf-8 -*-'''题目描述请编写一个函数,检查链表是否为回文。给定一个链表ListNode* pHead,请返回一个bool,代表链表是否为回文。测试样例:{1,2,3,2,1}返回:true{1,2,3,2,3}返回:false@author chimuuu'''class ListNode: def __init原创 2017-08-16 16:38:41 · 1230 阅读 · 0 评论 -
按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素
# usr/bin/env python# _*_ coding:utf-8 _*_'''按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素( 若元素含有的 ‘1’ 个数相同则返回数值较大的那个 )如:525 3 7 1 2返回:7 5'''def getResult(M, N, array): new_array = [] bin_arr原创 2017-08-30 10:00:59 · 708 阅读 · 0 评论