申请加入>
订阅>
1099-找链表中间节点,只遍历一次
作者:
时海
2020-08-12
在线编程入口一、题目给定一个长度大于1的单链表,如何遍历一次获取到中间节点的值注:如果链表长度为偶数,则结果去中间两个节点中的第一个输入、输出描述输入:list:长度大于1的单链表输出:中间节点的值Example输入:list=[2,6,8,4,1]输出:8二、思路使用一快一慢两个指针同时遍历链表,快指针每次往前走两步,慢指针每次走一步,...
求两个集合的交集
作者:
时海
2017-09-27
如:集合A={1,2,3,4},B={5,3,4},结果为:result={3,4}方法一:排序法思路:先对两个集合进行排序O(nlogn),然后通过一遍查询比较O(n),即可找出两个集合的交集publicstaticvoidmain(String[]args){List<Integer>listA=newArrayList&l...
Paxos算法之旅(四)zookeeper代码解析
作者:
bjchenli
2017-07-24
ZooKeeper是近期比较热门的一个类Paxos实现。也是一个逐渐得到广泛应用的开源的分布式锁服务实现。被认为是Chubby的开源版,虽然具体实现有很多差异。ZooKeeper概要的介绍可以看官方文档:http://hadoop.apache.org/zookeeper这里我们重点来看下它的内部实现。ZooKeeper集群中的每个serv...
Paxos算法之旅(一)追本溯源
作者:
bjchenli
2017-07-24
1982年,LeslieLamport与另两人共同发表论文描述了一种计算机容错理论。为了形象的表达其中的问题,Lamport设想出了一种场景:拜占庭帝国有许多支军队,军队的将军们必须制订一个统一的行动计划——进攻或者撤退。将军们在地理上是分隔开来的,只能靠通讯员进行通讯。并且将军中存在叛徒。叛徒可以任意篡改消息,欺骗某些将军进攻或撤退这就是...
Paxos算法之旅(一)追本溯源
作者:
bjchenli
2017-07-24
1982年,LeslieLamport与另两人共同发表论文描述了一种计算机容错理论。为了形象的表达其中的问题,Lamport设想出了一种场景:拜占庭帝国有许多支军队,军队的将军们必须制订一个统一的行动计划——进攻或者撤退。将军们在地理上是分隔开来的,只能靠通讯员进行通讯。并且将军中存在叛徒。叛徒可以任意篡改消息,欺骗某些将军进攻或撤退这就是...
Aviator(表达式执行引擎)发布1.0.1
作者:
bjchenli
2017-07-24
Aviator是一个表达式执行引擎,最近由于工作上的原因,又将这个东西扩充了一下,加入了静态的编译优化和seq库。对于类似”1+2”这样由常量组成的表达式,会在编译的时候直接计算出结果而非生成字节码运行时计算。非常量组成的表达式如”3.14RR+4/2”也会在编译的时候优化成”3.14RR+2”,也就是说能在编译的时候计算的都计算出来,不能...
快速排序及优化
作者:
bjchenli
2017-07-24
quicksort可以说是应用最广泛的排序算法之一,它的基本思想是分治法,选择一个pivot(中轴点),将小于pivot放在左边,将大于pivot放在右边,针对左右两个子序列重复此过程,直到序列为空或者只有一个元素。这篇blog主要目的是关注quicksort可能的改进方法,并对这些改进方法做评测。其目的是为了理解Arrays.sort(i...
LinkedList的局限
作者:
bjchenli
2017-07-24
java.util.LinkedList是双向链表,这个大家都知道,比如Java的基础面试题喜欢问ArrayList和LinkedList的区别,在什么场景下用。大家都会说LinkedList随机增删多的场景比较合适,而ArrayList的随机访问多的场景比较合适。更进一步,我有时候会问,LinkedList.remove(Object)方...
算法&大数据--(1)求交集
作者:
时海
2017-03-11
该系列文章将找一些有趣的算法题目,针对少量数据集和海量数据分别寻找解决方案,也欢迎大家多多指教!题目:求两个整数数组的交集,如下:int[]array1={2,6,3,9,4}int[]array2={4,7,9,1}array1,array2数组长度分别为N,M交集为:{4,9}解法:方法一:暴力法暴力法是最简单,最粗暴的解法。在这个硬件...
白话经典算法系列之七 堆与堆排序
作者:
时海
2017-02-18
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结...