随笔分类 - 算法相关
摘要:很久没有刷leetcode,习惯不能丢。 打算继续保持,从海外转到“力扣”,继续完成。 一、题目描述 二、解答 根据题意,有序数组,并且都是有解的。 如果单纯一个一个比对,也能找到想要的结果,只不过算法复杂度最高。 先确定左值,现在的题目就变成在有序数组中寻找一个数了; 常规有 二分查找,哈希;二分
阅读全文
摘要:一、题目描述 给定建筑的轮廓坐标,求叠加之后的轮廓结果 二、解法 这个题目最容易想到的思路是扫描法 https://briangordon.github.io/2014/08/the-skyline-problem.html 但是这个方法用python3实现了之后,超时了。代码如下: 超时的原因是因
阅读全文
摘要:一、题目 题目很简单,输入一个字母组成的二维数组,以某一个字母为起点,向、上下左右搜索、练成的字符看是不是在给定的字符串数组中 二、解答 通过深度优先搜索,每一步和数组中的字符串匹配是可以计算出来正确结果的,但是结果超时 重点是匹配的过程时间太长 通过字典树,可以优化两点 一是检索某个字符串在不在的
阅读全文
摘要:一、题目描述 Design a data structure that supports the following two operations: search(word) can search a literal word or a regular expression string conta
阅读全文
摘要:一、问题描述 We are given two arrays A and B of words. Each word is a string of lowercase letters. Now, say that word b is a subset of word a if every lette
阅读全文
摘要:1、目前已经刷了大概200道题目 主要使用的语言是python,刷完之后,发现盲写部分语法依然记不住; 以后刷算法保持一个原则,一定使用不提示代码的工具,纯文本编写,尽量不debug 2、后续尽量使用C++ 3、目前已经写的代码 https://github.com/liqiushui/leetco
阅读全文
摘要:一、题目描述 You have an array of logs. Each log is a space delimited string of words. For each log, the first word in each log is an alphanumeric identifie
阅读全文
摘要:一、题目分析 要求不能采用复制的手段,不能使用多余的空间 解析: 可以看出规律,最后的结果是将链表右边的部分逆转之后,和左边的部分穿插合并得来: 二、代码:
阅读全文
摘要:一、题目分析 题目要求逆转链表的第m到第n个之间的结点,因此思路是,讲m和n之间的结点单独拎出来作为一个单独的链表,进行逆转 然后问题退化为,逆转一个单链表。 可以采用递归的方式,每次传入上一个结点和当前结点,将当前结点指向上一个结点 然后将当前结点和下一个结点再次调用该方法 代码如下所示:
阅读全文
摘要:1、题目 2、分析,该题目可以针对每个字符串进行排序,然后计算每个字符串的hash值进行归类 3、优化、在计算hash值的时候,考虑hash算法跟字符串排序无关,也就是不用进行排序,针对26个字母分配26个质数,然后将hash函数设置为每个字母映射的质数乘积,便不用进行排序了,该方法利用了质数的特性
阅读全文
摘要:1、首先对数组进行排序 2、递归搜索符合的元素 3、注意回溯 超越67%的用户
阅读全文
摘要:此处先留空 使用搜索和回溯,递归来实现 参考:http://blog.csdn.net/zxzxy1988/article/details/8586289 描述简介,代码量最少
阅读全文
摘要:二分法查找需要插入的位置,需要注意两点 1、如果元素不存在,停止的时候start Index刚好是需要插入的位置 2、如果元素存在,需要向前追溯找到非目标元素的起始边界
阅读全文
摘要:这道题借助二分查找算法来查找目标值的index 然后向前和向后分别搜索起始边界 注意开始排除异常值优化速度 另外的一种思路是寻找 target-1 和 target+1的所在位置的索引,这两个值可能不存在,那么需要相应的修改二分查找算法
阅读全文
摘要:二分查找算法以及旋转之后的数组二分查找算法: 代码中注释参考了:http://www.cnblogs.com/springfor/p/3858140.html , 该博客中的算法描述比较易懂
阅读全文