算法
茅坤宝骏氹
语言:Java、C/C++、C#、Python、Linux Shell。
框架:Spring、Spring MVC、Spring Boot、Spring Cloud、Hibernate、Mybatis、Freemarker、Velocity。
前端:HTML5、CSS3、JavaScript、Bootstrap、JQuery、Vue、React。
数据库:oracle、mysql、MongoDB、HBase。
缓存:Memcache、Redis。
消息队列:kafka。
大数据:Hadoop、Hive、Sqoop、Flume、Spark、Strom、OpenTSDB、Druid。
展开
-
漫画:什么是时间复杂度
转载自 漫画:什么是时间复杂度时间复杂度的意义究竟什么是时间复杂度呢?让我们来想象一个场景:某一天,小灰和大黄同时加入了一个公司...... 一天过后,小灰和大黄各自交付了代码,两端代码实现的功能都差不多。大黄的代码运行一次要花100毫秒,内存占用5MB。小灰的代码运行一次要花100秒,内存占用500MB。于是...... 由此可见,...转载 2018-09-27 19:10:04 · 293 阅读 · 0 评论 -
10亿个数中找出最大的10000个数
转载自 海量数据处理 - 10亿个数中找出最大的10000个数(top K问题) 前两天面试3面学长问我的这个问题(想说TEG的3个面试学长都是好和蔼,希望能完成最后一面,各方面原因造成我无比想去鹅场的心已经按捺不住了),这个问题还是建立最小堆比较好一些。 先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并...转载 2018-11-24 21:38:43 · 708 阅读 · 0 评论 -
漫画:如何实现大整数相加
转载自 漫画:如何实现大整数相加 在程序中列出的 “竖式” 究竟是什么样子呢?我们以 426709752318 + 95481253129 为例,来看看大整数相加的详细步骤:第一步,把整数倒序存储,整数的个位存于数组0下标位置,最高位存于数组长度-1下标位置。之所以倒序存储,更加符合我们从左到右访问数组的习惯。 第二步,创建结果数组,...转载 2018-11-24 12:18:10 · 369 阅读 · 0 评论 -
漫画:删去k个数字后的最小值
转载自 漫画:删去k个数字后的最小值 我们来举一个栗子:给定整数 541270936,要求删去一个数,让剩下的整数尽可能小。此时,无论删除哪一个数字,最后的结果都是从9位整数变成8位整数。既然同样是8位整数,我们显然应该优先把高位的数字降低,这样对新整数的值影响最大。 如何把高位的数字降低呢?很简单,我们把原整数的所有数字从左到右进行比较,如果发现某一位的数...转载 2018-11-18 11:01:17 · 496 阅读 · 0 评论 -
漫画:什么是动态规划?(整合版)
转载自 玻璃猫 程序员小灰————————————题目:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶。要求用程序来求出一共有多少种走法。比如,每次走1级台阶,一共走10步,这是其中一种走法。我们可以简写成 1,1,1,1,1,1,1,1,1,1。再比如,每次走2级台阶,一共走5步,这是另一种走法。我们可以简写成 2,...转载 2018-04-13 14:05:56 · 1152 阅读 · 0 评论 -
漫画算法:如何判断链表有环
转载自 玻璃猫 程序员小灰大四毕业前夕,计算机学院,正在四处求职的小灰碰到了同系的学霸大黄……小灰边说边回忆着上周去面试的情形……有一个单向链表,链表当中有可能出现“环”,就像下图这样。如何用程序判断出这个链表是有环链表?方法一:首先从头节点开始,依次遍历单链表的每一个节点。每遍历到一个新节点,就从头节点重新遍历新节点之前的所有节点,用...转载 2018-04-13 13:59:27 · 309 阅读 · 0 评论 -
漫画算法:无序数组排序后的最大相邻差值
转载自 玻璃猫 程序员小灰小灰一边回忆一边讲述起当时面试的情景......题目:有一个无序整型数组,如何求出这个数组排序后的任意两个相邻元素的最大差值?要求时间和空间复杂度尽可能低。(例如:无序数组 2,3,1,4,6,排序后是1,2,3,4,6,最大差值是6-4=2)该解法的时间复杂度为O(n+k),空间...转载 2018-04-13 21:43:49 · 519 阅读 · 0 评论 -
漫画算法:判断2的乘方
转载自 玻璃猫 程序员小灰 小灰陷入回忆当中。。。。 题目:实现一个方法,判断一个正整数是否是2的乘方(比如16是2的4次方,返回True;18不是2的乘方,返回False)。要求性能尽可能高。 解法一: 创建一个中间变量Temp,初始值是1。然后进入一个循环,循环中每次让Temp和目标整数比较,如果相等,则说明目标整数是2的乘方;如果不相等,则让Temp增大一倍,继续循环比...转载 2018-04-13 21:47:21 · 293 阅读 · 0 评论 -
漫画算法:最小栈的实现
转载自 玻璃猫 程序员小灰 小灰回忆起当时的情景…… 题目:实现一个栈,带有出栈(pop),入栈(push),取最小元素(getMin)三个方法。要保证这三个方法的时间复杂度都是O(1)。 小灰的想法: 1.创建一个整型变量 min,初始值-1 2.当第一个元素...转载 2018-04-13 21:49:57 · 405 阅读 · 0 评论 -
漫画算法:找出缺失的整数
转载自 玻璃猫 程序员小灰 小灰一边回忆一边讲述起当时面试的情景......题目:一个无序数组里有99个不重复正整数,范围从1到100,唯独缺少一个整数。如何找出这个缺失的整数?解法一:创建一个HashMap,以1到100为键,值都是0 。然后遍历整个数组,每读到一个整数,就找到HashMap当中对应的键,让其值加一。由于数组中缺少一个整...转载 2018-04-13 21:55:36 · 338 阅读 · 0 评论 -
漫画算法:辗转相除法是什么鬼
转载自 玻璃猫 程序员小灰大四毕业前夕,计算机学院的小灰又一次顶着炎炎烈日,去某IT公司面试研发工程师岗位……半小时后,公司会议室,面试开始……小灰奋笔疾书,五分钟后……小灰的思路十分简单。他使用暴力枚举的方法,试图寻找到一个合适的整数 i,看看这个整数能否被两个整型参数numberA和numberB同时整除。这个整数 i 从2开始循环累加,一直累加到 numberA...转载 2018-04-13 22:04:00 · 241 阅读 · 0 评论 -
Java单链表反转
转载自 Java单链表反转 详细过程(一)单链表的结点结构: data域:存储数据元素信息的域称为数据域; next域:存储直接后继位置的域称为指针域,它是存放结点的直接后继的地址(位置)的指针域(链域)。 data域+ next域:组成数据ai的存储映射,称为结点; 注意:①链表通过每个结点的链域将线性表的n个结点按其逻辑顺序链接在一起的。 ...转载 2018-04-18 21:14:43 · 4994 阅读 · 0 评论 -
递归算法介绍及Java应用实战
转载自 递归算法介绍及Java应用实战什么是递归算法递归算法是把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。一个过程(或函数)直接或间接调用自己本身,这种过程(或函数)叫递归过程(或函数)。递归过程一般通过函数或子过程来实现。递归方法:在函数或子过程的内部,直接或者间接地调用自己的算法。递归其实就是在栈内存中不断的加载同一个函数什么时候用递...转载 2018-04-24 11:16:57 · 221 阅读 · 0 评论 -
我猜,每个程序员对着电梯都想过调度算法吧
转载自 我猜,每个程序员对着电梯都想过调度算法吧 传统电梯调度算法1.1 先来先服务算法(FCFS)先来先服务(FCFS-First Come First Serve)算法,是一种随即服务算法,它不仅仅没有对寻找楼层进行优化,也没有实时性的特征,它是一种最简单的电梯调度算法。它根据乘客请求乘坐电梯的先后次序进行调度。此算法的优点是公平、简单,且每个乘客的请求都能依次地得到处理,...转载 2018-05-06 14:33:50 · 465 阅读 · 0 评论 -
Java最小堆解决TopK问题
转载自 Java最小堆解决TopK问题TopK问题是指从大量数据(源数据)中获取最大(或最小)的K个数据。TopK问题是个很常见的问题:例如学校要从全校学生中找到成绩最高的500名学生,再例如某搜索引擎要统计每天的100条搜索次数最多的关键词。对于这个问题,解决方法有很多:方法一:对源数据中所有数据进行排序,取出前K个数据,就是TopK。但是当数据量很大时,只需要k个最大的数...转载 2018-06-18 07:25:22 · 203 阅读 · 0 评论 -
最长回文子串(Longest Palindromic Substring)
转载自 最长回文子串(Longest Palindromic Substring)——三种时间复杂度的解法 子串:小于等于原字符串长度由原字符串中任意个连续字符组成的子序列 回文:关于中间字符对称的文法,即“aba”(单核)、“cabbac”(双核)等 最长回文子串:1.寻找回文子串;2.该子串是回文子串中长度最长的。一、O(n^3)时间复杂度方法——暴力求解...转载 2018-11-24 21:43:51 · 641 阅读 · 0 评论