算法
文章平均质量分 84
littlehaes
这个作者很懒,什么都没留下…
展开
-
剑指offer面试题46(java版):把数字翻译成字符串
welcome to my blog剑指offer面试题46(java版):把数字翻译成字符串题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成“z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: ...原创 2020-02-22 10:39:19 · 524 阅读 · 0 评论 -
双指针压缩搜索空间的原理
双指针压缩搜索空间的原理整体讲得很清晰A[0]+A[7]的解释有错误, 应该是j=7的情况都被排除搜索空间之所以是上三角, 是因为i<j转载 2020-02-08 20:53:39 · 178 阅读 · 0 评论 -
线段树详解及各种版本代码实现 代码有详细注释
下面的代码以求某个范围上的和为例讲解了线段树, 讲得非常好线段树详解及各种版本代码实现 代码有详细注释原创 2020-02-07 16:41:24 · 144 阅读 · 0 评论 -
5分钟看懂并查集原理
为了解释并查集的原理,我将举一个更有爱的例子。 话说江湖上散落着各式各样的大侠,有上千个之多。他们没有什么正当职业,整天背着剑在外面走来走去,碰到和自己不是一路人的,就免不了要打一架。但大侠们有一个优点就是讲义气,绝对不打自己的朋友。而且他们信奉“朋友的朋友就是我的朋友”,只要是能通过朋友关系串联起来的,不管拐了多少个弯,都认为是自己人。这样一来,江湖上就形成了一个一个的帮派,通过两...转载 2019-09-03 11:52:21 · 163 阅读 · 0 评论 -
数据结构基础-排序算法整理
welcome to my blog文章目录0. 笔记1. 排序分类2. 选择排序3. 插入排序4. 希尔排序5. 冒泡排序6. 归并排序7. 使用了归并排序思想的题:小和问题8. 使用了归并排序思想的题:逆序对问题9. 堆排序10. 堆排序扩展题目11. 荷兰国旗问题(掌握partition)12. 快速排序13. 桶排序14. 桶排序之--计数排序15. 桶排序之--基数排序0. 笔记不...原创 2019-08-04 11:23:51 · 196 阅读 · 0 评论 -
DynamicProgramming动态规划
Welcome To My Blog 刚接触动态规划,突然发现这是个很大的领域,所以就先通过别人的分享以及做题逐步总结了.DynamicProgrammingdynamic programming is a method for solving a complex problem by breaking it down into a collection of simpler sub...原创 2018-04-22 23:27:48 · 917 阅读 · 0 评论 -
[LeetCode] 9. Palindrome Number (easy)
Welcome To My Blog 9. Palindrome Number (easy) 题目要求:检查给定的数字是否是回文数字 我的做法:把每个数字都存起来,然后首尾比较,从两头一直比到中间,这样做可以防止溢出(事实上没必要考虑溢出,因为对于正数来说,溢出后就是负数了,肯定不相等),时间复杂度和空间复杂度都是O(n),虽然AC了,但显然不合适.我的做法其实就是把数字分成两部...原创 2018-04-18 09:27:37 · 285 阅读 · 0 评论 -
[LeetCode] 8. String to Integer (atoi) (medium)
Welcome To My Blog 8. String to Integer (atoi) (medium) 从这道题中学到了以下几点 1. 对问题进行分解,比如zigzag可以分解为竖直向下排列和斜向上排列.本题是提取给定字符串中的数字,看要求可以得出合法的输入可能包含四部分,先考虑一般情况再考虑边界情况 + 一般情况: 空格+正负号+数字+字母 + 边...原创 2018-04-17 16:47:20 · 151 阅读 · 0 评论 -
[LeetCode]7. Reverse Integer (easy)
Welcome To My Blog 7. Reverse Integer (easy) 1. 在java中,数值溢出后还能计算,只不过得到的计算结果不正确,可以设置两个变量并利用这一点进行溢出判断 2. 因为在res = res * 10 + curr;形式下,0没有贡献,所以不用专门处理leading 0 3. 可以保留符号运算,负数+负数或者正数+正数,带符号运算...原创 2018-04-17 16:46:58 · 135 阅读 · 0 评论 -
[LeetCode]6. ZigZag Conversion (medium)
Welcome To My Blog 6. ZigZag Conversion (medium) 题目意思:将一个字符串按照之字形(zigzag)排列,然后按行输出,如下图: 1. 核心思想:之字形排列可以分解为两步:向下竖直排列;斜向上排列,竖直在前,斜在后,通过两个循环分别实现两个分解动作,再通过一个大循环遍历所有元素 2. 数组约束i与StringBuffer约束ro...原创 2018-04-16 09:29:56 · 190 阅读 · 0 评论 -
[LeetCode]5. Longest Palindromic Substring (medium)
Welcome To My Blog 5. Longest Palindromic Substring (medium)Brute force找出所有可能的子串(窗口),O(n^2),再判断是否为回文,O(n^2),所以总的时间复杂度为O(n^3),Time Limit Exceeded Dynamic Programming 1. 用递归的方式实现P(i...原创 2018-04-15 22:48:57 · 178 阅读 · 0 评论 -
[LeetCode]4.Median of Two Sorted Arrays (hard)
Welcome To My Blog 4. Median of Two Sorted Arrays (hard)给定两个有序数组,找中位数median,按照自己的思路AC了,用了挺长时间 需要学习基础算法 1. 心得: + 解题要形成自己的框架! + 考虑索引在数组中是否有效,同时也要考虑索引的实际含义 + 对两个需要同时成立的大小约束A[i-1]class Sol...原创 2018-04-15 22:48:32 · 129 阅读 · 0 评论 -
[LeetCode]3.Longest Substring Without Repeating Characters (medium)
Welcome To My Blog 3.Longest Substring Without Repeating Characters (medium)Brute solution因为Time Limit Exceeded不被AC 维护两个index找出所有的window,O(n^2),每次都检查window内的元素是否有重复,最终导致O(n^3)time com...原创 2018-04-15 22:48:09 · 154 阅读 · 0 评论 -
[LeetCode]1. Two Sum (easy)
Welcome To My Blog 1. Two Sum (esay)Brute Force直接通过两个元素满足的等式关系寻找,即 a + b = target,选定一个a,则b = target - a,遍历数组,看看有没有值为b的元素 Complexity Analysis Time complexity : O(n^2)Space complexity:...原创 2018-04-09 23:57:54 · 126 阅读 · 0 评论 -
[LeetCode]2. Add Two Numbers (medium)
Welcome To My Blog 2. Add Two Numbers (medium) 1. 指针的用处: + 判断是否到达链表结尾 + 在一个已存在的链表上移动指针,一定要先判断当前指针是否指向null 2. 两数相加,切记要加上进位(0或1),从个位开始处理 3. 10进制加法,每一位的范围是[0,9],进位放到更高一位上.这是两个约束 4. C...原创 2018-04-15 00:39:11 · 178 阅读 · 0 评论 -
普林斯顿大学算法Week1: Percolation 渗透(98分)--总结及代码
总结视频讲述了并查集算法的细节,作业是该算法的实际应用 1. 下载algs4.jar,并添加到CLASSPATH中 2. 使用algs4.jar中的工具:求均值,求标准差,输入输出 3. 需要传入外部参数的方法都得进行参数检测,否则扣分 4. UnionFind算法的输入是一维的,Percolation系统是n*n的格子,每个site由坐标对(x,y)表示, 所以要想描述点与点之间的...原创 2018-01-25 18:27:06 · 3376 阅读 · 1 评论 -
普林斯顿大学算法Week2:Deques and Randomized Queues(95分)--总结及代码
总结一.Deque目标: A double-ended queue or deque is a generalization of a stack and a queue that supports adding and removing items from either the front or the back of the data structure. Create a g...原创 2018-01-28 08:48:18 · 659 阅读 · 0 评论 -
普林斯顿大学算法Week3:CollinearPoints共线模式识别(99分)--总结及代码
总结(代码有详细注释)本课讲了归并排序,作业应用是排序进行共线的模式识别,java1.8中的排序用的是tim排序,结合了归并排序与插入排序,属于稳定排序:排序之后相同元素的相对位置会不会改变Point.java中有个非常重要的方法,compareTo(),它定义:纵坐标越小则点越小,如果纵坐标相同,那么横坐标越小则点越小.(如果作业中要求横坐标也是按顺序排列,那么排序后的点集映射到...原创 2018-02-03 12:12:45 · 1638 阅读 · 3 评论