题目大意:
N个气球排成一排,从左到右编号为1~N,给N组数据,每次给2两个整数s,e,表示从s到e将
气球涂色。当涂到N次以后已经忘记了第i个气球被涂过几次颜色了。现在来计算出每个气球被
涂了几次颜色,并输出出来。
思路:
典型的更新区间,单点求值问题。直接模拟会超时,考虑用树状数组来做。单点更新中,树状
数组表示区间的和。在区间更新中,树状数组表示单个元素的变化。
这道题中,区间(s,e)加1表示将s到e的气球涂色,先进行操作Update(s,1),表示将s~N个气
球全部涂一次颜色,再进行操作Upd...
分类:
编程语言 时间:
2015-04-27 23:48:19
阅读次数:
185
题目大意:
求把一个具有N个不同元素的序列通过交换两个相邻的元素转换成升序序列需要进行的交换次数
是多少。
例如:1 2 3 5 4,只需要交换5和4,交换次数为1次。
思路:
典型的求逆序数题。其实可以直接暴力过。但是用树状数组效率比较高。对于值为a第i个元素,
需要交换次数为前i个元素中大于a的元素个数,即逆序数。
用树状数组来做,数组Tree[i]表示数字i是否在序列中出现过,如果数字i已经存在于序列中,
Tree[i] = 1,否则Tree[i] = 0。按序列从左到右将值为a的元素当作下标为a,...
分类:
编程语言 时间:
2015-04-27 23:45:36
阅读次数:
193
这个问题其实来源于Leetcode的一道题目,也就是上一篇日志LRU Cache。在使用LinkedList超时后,换成ArrayList居然AC了,而问题居然是在于List.remove(Object o)这个方法。我们知道,链表和数组相比,最主要的特点就是add和remove的操作是O(1)的。...
分类:
编程语言 时间:
2015-04-27 23:36:41
阅读次数:
182
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的compareTo方法被称为它的自然比较方法。实现此接口的对象列表(和数组)可以通过Collections.sort(和Arrays.sort)进行自动排序。实现此接口的对象可以用作有序映射中的键或有序集合中的元素,无需指...
分类:
编程语言 时间:
2015-04-27 23:26:04
阅读次数:
158
目 录 1. 前言 2. 试用范围3. JAVA命名规范-- 3.1 公共约定 3.2 Java文件、包 3.3 类、接口命名规范 3.4 方法命名规范 3.5 常量 3.6 变量和参数 3.7 组件/部件 3.8 集合 3.9 神秘的数 3.10 其他 3.11 Java异常 3.12 ...
分类:
编程语言 时间:
2015-04-27 23:20:14
阅读次数:
168
base.js/** * Created by zhouyan on 15/4/26. *///前台调用var $=function(_this){ return new Base(_this);}//基础库function Base(_this){ //创建一个数组,来保存获取的节点和...
分类:
其他好文 时间:
2015-04-27 23:14:16
阅读次数:
146
给定K个整数组成的序列{ N1, N2, ..., NK},“连续子列”被定义为{ Ni, Ni+1, ..., Nj},其中 1 0){40 return a[left];41 }else{42 return 0;43 } 44...
分类:
其他好文 时间:
2015-04-27 23:13:05
阅读次数:
251
差分消除加减一个值得影响,貌似r二分上界要设成(n-2)/2?为啥?sa求不可重叠最长重复子串给定一个字符串,求最长重复子串,这两个子串不能重叠。算法分析:这题比上一题稍复杂一点。先二分答案,把题目变成判定性问题:判断是否存在两个长度为 k 的子串是相同的,且不重叠。解决这个问题的关键还是利用hei...
分类:
编程语言 时间:
2015-04-27 23:10:08
阅读次数:
170
题目1:给出一个一维数组A, 大小为n, 相邻元素的差的绝对值都为1. 如A = [1, 0, 1, 2, 3, 2, 1, 2, 3],现在给定A和目标查找数num. 请找到num在数组中的位置。
题目2:在题目一的前提下,现在要返回num的所有索引位置。思路:依次遍历可以实现,但是复杂度O(N).
如果数组第一个元素是A[0], 要找的数是num. 设 t = abs(num - A[0]...
分类:
编程语言 时间:
2015-04-27 21:59:15
阅读次数:
181