算法与数据结构
常用算法整理,编程能力
shuimuhanchen
天地者,万物之连旅;光阴者,万代之过客。
展开
-
内部排序
直接插入排序最小时间复杂度O(n) 平均时间复杂度O(n^2) 最大时间复杂度O(n^2) 空间复杂度O(1) 稳定 package yanyingnan.baodian.sort;import java.util.Arrays;public class InsertSort1 { public static void insertSort(int...原创 2018-09-02 21:59:27 · 244 阅读 · 0 评论 -
链表
链表算法总结1. 删除重复元素package yanyingnan.baodian.list;import java.util.HashSet;/*单链表中删除重复元素*/public class Solution_01 { public static void deleteDuplecate(ListNode node){ HashSet<...原创 2018-05-16 14:25:13 · 184 阅读 · 0 评论 -
树-相关算法
按箭头方向一步步继承推进。平衡二叉书左右子树高度差不能超过1。红黑树是一种自平衡的二叉树,是平衡二叉树的一种表现方式。红黑树通过一些限制来保证它大致是平衡的——因为红黑树的高度不会无限增高,这样保证红黑树在最坏情况下都是高效的,不会出现普通排序二叉树的情况。跟别的平衡树比,可以只变色,少做几次旋转。B树是多路平衡树B-树叶节点为空。B+树叶子结点存关键字,以及指向关键字的指针,关键...原创 2018-05-08 11:32:33 · 221 阅读 · 0 评论 -
字符串
字符串算法总结1.字符流中第一个只出现一次的字符package neu.yanyingnan.offer;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; /*题目描述 请实现一个函数用来...原创 2018-05-16 14:56:38 · 295 阅读 · 0 评论 -
数组
数组算法总结1.找出数组中任意一个重复的数字。package neu.yanyingnan.offer; /*题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 ...原创 2018-05-16 15:04:43 · 154 阅读 · 0 评论 -
栈和队列
栈和队列算法总结1. 求栈中最小元素,要求o(1)时间复杂度package yanyingnan.baodian.stack_queue;import java.util.Stack;/*o(1)时间复杂度 求栈中最小元素*/public class Mystack { Stack<Integer> elem; Stack<Integer&a原创 2018-05-16 14:37:41 · 124 阅读 · 0 评论 -
位运算
位运算算法总结位运算符:&(与):两者都为1才为1 |(或):有一个是1就是1 ~(非):取反 ^(异或):两者不同才为11.交换x,y的值(不使用中间值tmp)法一:x = x+y;//有可能越界y = x-y;x = x-y;法二:x = x^y;//x被y异或两次还等于x本身y = x^y;x = x^y;2.二进制中1的个数pack...原创 2018-05-16 16:28:14 · 156 阅读 · 0 评论 -
海量数据处理
topK1.分治法 例如:将大数据平均分成100份,分别找出topK,再从100*K中找出topK,可以利用快排。2.小顶堆法 例如:建一个有K个元素的小顶堆,遍历剩下的元素,与root结点比较,大的话就留下,重新建堆,再循环。最终得到topK。3.MapReduce分布式法 例如:一个Map函数,两个Reduce函数,将数据交给多台机器处理。但是不能随便...原创 2018-04-22 19:53:57 · 193 阅读 · 0 评论 -
其它算法
其它算法练习1.圆圈中最后剩下的数字package neu.yanyingnan.offer;import java.util.LinkedList; /*题目描述 每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。 HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:...原创 2018-05-17 14:06:34 · 163 阅读 · 0 评论