Algrithom    2018-03-18 10:03:24    163    0    0
简介 本文主要通过实际例子介绍 segment tree 这种数据结构及其应用。以LeetCode上的一道题目  307. Range Sum Query - Mutable  为例说明。 这道题目 307. Range Sum Query - Mutable 要求求数组的区间和,但是有个额外条件,就是 会进行多次数组区间求和以及数组元素的更新的操作。 从正常的思路出
Algrithom    2018-03-17 14:19:28    193    0    0
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Scanner; public class Fama { public static void main(String[] args) { // TODO Auto-generated
Algrithom    2018-03-17 10:31:00    127    0    0
首先,如果是右移&1的方法,会陷入死循环。避免死循环的办法是另1左移补1,1->2,左移32次即可,不过不够高效。 高效算法 首先作如下分析: n & (n - 1)可以将n的二进制表示中最右侧的一个1去掉,例如1100 减去1得到1011,那么 1100 & 1011得到1000,即将1100最右侧的一个1去掉。如下函数每次循环就去掉其二进制表示中一个1,那
Algrithom    2018-03-17 10:22:01    127    0    0
稳定性概念 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法, 冒泡排序、插入排序、归并排序和基数排序是稳定的排序算法。 一、冒泡排序 冒泡排
Algrithom    2018-03-17 10:02:52    117    0    0
快速排序多用于内部排序,归并排序多用于外部排序。归并需要申请大内存,不适合大规模排序。 //QuickSort public class Application { public static void qSort(int[] arr, int head, int tail) { if (head >= tail || arr == null || arr.le
Algrithom    2018-03-17 09:44:07    148    0    0
/**  public class TreeNode {      int val = 0;      TreeNode left = null;    &nbs
Algrithom    2018-03-17 09:17:41    148    0    0
public class Josephus {              public staticvoid main(String[] args){      &
Java    2018-03-12 10:40:05    114    0    0
就是拷贝指针和拷贝实例对象的区别。 http://www.cnblogs.com/chenssy/p/3308489.html
Java    2018-03-12 10:18:04    118    0    0
1、add:将指定的元素添加到此 set(如果该元素尚未存在于 set 中)。 public boolean add(E e) { return m.put(e, PRESENT)==null; } 2、addAll:将指定 collection 中的所有元素添加到此 set 中。 public boolean addAll(Col
Java    2018-03-12 10:15:13    125    0    0
 http://www.jb51.net/article/32652.htm 首先介绍一下什么是Map。在数组中我们是通过数组下标来对其内容索引的,而在Map中我们通过对象来对对象进行索引,用来索引的对象叫做key,其对应的对象叫做value。这就是我们平时说的键值对。 HashMap通过hashcode对其内容进行快速查找,而 TreeMap中所有的元素都保持着某种固定的顺序,如果