算法
明月清风_Dustin
只能用一次的是打工,可以重复使用的是事业。公众号和小程序:超火壁纸
展开
-
数据结构与算法总结
一、线性表二、散列表三、树四、图五、算法复杂度分析六、基本算法思想七、排序八、搜索与查找九、字符串匹配十、其他...原创 2019-11-14 16:33:02 · 123 阅读 · 0 评论 -
算法学习
http://www.jobbole.com/members/bjweimengshu/https://mp.weixin.qq.com/s?__biz=MzI1MTIzMzI2MA==&mid=2650561333&idx=1&sn=654c214c204c708e7a9d559cec12c69e&chksm=f1feedb6c68964a0add2fa32c...转载 2018-12-09 23:51:32 · 93 阅读 · 0 评论 -
hashmap的扩容原理
https://blog.csdn.net/aichuanwendang/article/details/53317351转载 2018-12-09 23:36:59 · 562 阅读 · 0 评论 -
二叉树--搜索二叉树--红黑树(图解)
https://www.sohu.com/a/201923614_466939转载 2018-12-09 23:24:06 · 205 阅读 · 0 评论 -
Palindrome Number
https://leetcode.com/problems/palindrome-number/刚开始一看到这个,以为是任何其它变量都不能用,最后发现,原来还是可以定义其它的变量。自己写的这个,空间复杂度为o(1)时间复杂度是O(N)原创 2016-10-30 00:00:04 · 244 阅读 · 0 评论 -
插入排序
插入排序:特点:稳定,相对顺序不会变,在序列基本有序的情况下,排序时间短;最差的情况应该是将序列倒序变成顺序。时间复杂度为O(N2),最好情况比较n-1次,移动n-1次。适用场景:小数组,数据基本有序,要求稳定。package InsertSort;public class InsertSort { public static void main(String[] args原创 2016-10-18 15:21:28 · 631 阅读 · 0 评论 -
选择排序
选择排序package insertSort;public class InsertSort { public static void main(String[] args) { // TODO Auto-generated method stub Integer[] array={85, 0, 63, 6, 1, 31, 0, 50,899}; int length=ar原创 2016-10-18 01:10:03 · 182 阅读 · 0 评论 -
冒泡排序
冒泡排序:package bubbleSort;public class bubbleSort { public static void main(String[] args) { // TODO Auto-generated method stub Integer[] array={85, 0, 63, 6, 1, 31, 0, 50,899}; int length=a原创 2016-10-18 00:58:46 · 167 阅读 · 0 评论 -
ZigZag
分析:刚开始看到这个题,完全不理解,后面找了一些资料,理解了。然后不太理解这个规律,结合几个具体的实例,掌握了规律,但具体的实现遇到不少问题,最后通过调试,针对出现的问题来修改,让程序成功跑起来了。时间复杂度为O(n),只是空间用得比较多。public class Solution { public String convert(String s, int numRows) {原创 2016-10-27 10:13:18 · 379 阅读 · 0 评论 -
平衡二叉树
二叉平衡查找树:左子树中所有节点的值小于根的值,右子树中的所有节点的值大于根的值左右子树的高度之差的绝对值为0或1原创 2016-11-06 21:13:37 · 160 阅读 · 0 评论 -
队列
一.队列的实现,使用ArrayList关键点,front是最开始插入的元素,而rear是刚刚插入的元素,front先出去,rear后插入后出去import java.util.*;class Queue{ private List list=new ArrayList(); public Queue(){ } public T delQueue(){ return原创 2016-11-06 20:48:41 · 268 阅读 · 0 评论 -
快速排序
之前看了《如何解题》,里面说到要思考问题的产生背景,问题的本质。以前写过很多次快速排序,都都没有记住。这次先百度的,找到了快速排序诞生时期,理解了其中的原理。再写快速排序就变得很简单了。排序算法(Sorting algorithm)是计算机科学最古老、最基本的课题之一。要想成为合格的程序员,就必须理解和掌握各种排序算法。目前,最常见的排序算法大概有七八种,其中"快速排序"(Qu原创 2016-10-16 00:21:09 · 207 阅读 · 0 评论 -
编程习惯
1.思考清楚再开始编码。看清题目,理清楚题目的已知条件和未知条件,思考解题的思路并计算时间和空间复杂度。这样,自己写的代码正确性和效率会更高。2.良好的代码命名和缩进对齐习惯。一般的大项目都是这样要求的,小项目才会让你随便写。缩进合理能让代码看起来更加的整洁。3.测试。写完函数之后测试或者写之前测试,这样会更受面试官喜欢。同时也能降低自己编程出错的概率。原创 2016-10-24 15:01:18 · 185 阅读 · 0 评论 -
Median of Two Sorted Arrays
题目:https://leetcode.com/problems/median-of-two-sorted-arrays/结果:https://leetcode.com/submissions/detail/79679113/分析:部分有序,想到了用插入排序的方法,这样会更快。要求时间复杂度是o(n+m),根据具体的问题,做了一定的改动。主要思想还是根据入排序。分而治之,分为一般情况和原创 2016-10-23 16:57:47 · 161 阅读 · 0 评论 -
Longest Substring Without Repeating Characters
String.toCharArray()的速度是String.split("")的5倍。自己写的算法,第一次竟然花了2千多ms,主要是用了split,速度太慢了。改了之后,速度到了600多ms,还是很差public int lengthOfLongestSubstring(String s) { if(s==(""))return 0; if(s.length()==1)ret原创 2016-10-23 00:09:43 · 160 阅读 · 0 评论 -
Add Two Numbers
在leetcode里面学习算法和数据结构,真爽,很好玩。亮点在于,在线提交结果,可以判断自己代码写的好坏,还能看到非常优秀的代码,真是一种享受。学得非常有意思,这里就把自己学习的过程记录下来,以后可以回顾一下。题目:https://leetcode.com/problems/add-two-numbers/第一次写的代码:运行速度是58ms,击败了20%的人分析:代码写得太长了,不够简原创 2016-10-22 16:57:13 · 260 阅读 · 0 评论