摘要:1、O(1)时间检测2的幂次 2.不同的二叉查找树 思路:卡特兰数。具体介绍可以参考另外一个博文 https://www.cnblogs.com/linshuhui/p/9678180.html class Solution: """ @param n: An integer @return: An
阅读全文
摘要:一、最朴素的算法 首先先考虑要求,正常来说洗牌,就是保证每一个位置出现每一张牌的概率是一样的。有n张牌,任何一种系列出现的概率应该是1/(n!) 思路: 1. 初始化原始数组和新数组,原始数组长度为n(已知); 2. 从还没处理的数组(假如还剩k个)中,随机产生一个[0, k)之间的数字p(假设数组
阅读全文
摘要:1、判断某个数是否是2的幂次方 2、尾部的0
阅读全文
摘要:1、x 的平方根 2、搜索插入位置 6、木材加工
阅读全文
摘要:1、删除元素 2.子数组之和 3.删除排序数组中的重复数字 4、合并排序数组 5、两数之和 9、数组划分 思路:快排思想 class Solution: """ @param nums: The integer array you should partition @param k: An inte
阅读全文
摘要:一、两个字符串是变位词 坑:sorted函数排序字符串返回的是列表 二、乱序字符串 题目内容: 求解 小坑:刚开始看题意以为里面只有一组乱序字符串,实际上可能有多组。 求解思路: 代码如下: 三、比较字符串 四字符串查找 暴力解法: 进阶解法 五、 最长公共子串 六最长公共前缀
阅读全文
摘要:一、链表的反转 示例: 分析 :刚开始的时候很自然的想到,创建一个列表,然后遍历链表,将每个节点保存在列表中,然后根据列表,反向构造一个新的链表。但是这个很明显很low,一方面是空间复杂度为O(n),一方面是要遍历两遍。后来想都到了另外一种方法,只需要遍历一遍,然后所需的额外空间也非常少。 核心思想
阅读全文
摘要:一、什么是动态规划 动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。 使用动态规划特征: 1.
阅读全文
摘要:一、一个关于找零的经典问题 这个问题换而言之就是,服务过的持50的客户数量一定要大于等于持100的。解决的思路大致如下: 其实上面的解法本质就是卡特兰数: 所谓的卡特兰数就是满足下面式子: 卡特兰数的前几项是1, 1, 2, 5, 14, 42, 132, 429, 1430 二、括号匹配问题 显然
阅读全文
摘要:1、无重复最长子字符串 题目: 解法: 2、盛最多水的容器 解法: 3、三数之和 对于寻找两个数的和,我们通常采用首尾双指针的处理方法,即对于排序后的数组(升序)而言,分别从头尾向中间靠拢,当头尾指针对应元素之和大于目标值时,我们需要缩小元素和,即尾指针前移。当元素之和小于目标值时,我们需要增大元素
阅读全文
摘要:显示不同量级的算法的一个很好的例子是字符串的乱序检查。乱序字符串是指一个字符串只是另一个字符串的重新排列。例如,'heart' 和 'earth' 就是乱序字符串。'python' 和 'typhon' 也是。为了简单起见,我们假设所讨论的两个字符串具有相等的长度,并且他们由 26 个小写字母集合组
阅读全文
摘要:一、冒泡排序 冒泡排序的的简单版本 简单选择排序,时间复杂度O(n^2) 升级版,设置flag,当flag不再变化的时候说明后面的序列已经是有序的了,无需再判断。 二、选择排序 三、直接插入排序 四、归并排序 五、快速排序 思想:选择第一个数作为基准,使用双指针,i,j 分别指向列表开头和结尾,然后
阅读全文