Bitmap
来源:互联网 发布:javascript 构造函数 编辑:程序博客网 时间:2024/05/17 04:48
Bitmap的概念可以参考http://www.cnblogs.com/dyllove98/archive/2013/07/26/3217741.html这篇文章和维基百科
实现的精华
Bitmap的精华就在于下面这一段代码,摘抄自前面提到的文章。
#define SHIFT 5#define MASK 0x1F/** * 设置所在的bit位为1 * * T = O(1) * */void set(int n, int *arr){ int index_loc, bit_loc; index_loc = n >> SHIFT; // 等价于n / 32 bit_loc = n & MASK; // 等价于n % 32 arr[index_loc] |= 1 << bit_loc;}
n & MASK
让我联想到了Java中HashMap的size,具体可以看…
实例
用BitSet来求解LeetCode Two Sum问题
public class Solution { public int[] twoSum(int[] numbers, int target) { // make all numbers >= 0 int min = Integer.MAX_VALUE; for (int n: numbers) { if (n < min) { min = n; } } if (min < 0) { for (int i = 0; i < numbers.length; i++) { numbers[i] += -min; } target += 2 * (-min); } // index to return int result1 = -1; int result2 = -1; // special condition // target: 28, two of 14 in array int halfTarget = target / 2; if (target % 2 == 0) { for (int i = 0; i < numbers.length; i++) { if (numbers[i] == halfTarget) { if (result1 == -1) { result1 = i; } else { result2 = i; return new int[]{result1, result2}; } } } } // normal condition BitSet bitSet = new BitSet(target); for (int i = 0; i < numbers.length; i++) { int value = numbers[i]; // prevent a single 14 becomes the return index if target equals 28 if (value <= target && value != halfTarget) { bitSet.set(value); } } for (int i = 0; i < numbers.length; i++) { int value = numbers[i]; if (target - value >= 0 && bitSet.get(target - value)) { result1 = i; } } int friend = target - numbers[result1]; for (int i = 0; i < numbers.length; i++) { if (numbers[i] == friend && result1 != i) { result2 = i; } } // order answer to output if (result1 < result2) { return new int[]{result1, result2}; } else { return new int[]{result2, result1}; } }}
速度超过了99%的玩家
参考
http://my.oschina.net/a20092173/blog/501449?p=1
http://www.cnblogs.com/dyllove98/archive/2013/07/26/3217741.html
0 0
- Bitmap
- bitmap
- Bitmap
- bitmap
- bitmap
- BitMap
- BITMAP
- Bitmap
- Bitmap
- Bitmap
- Bitmap
- bitmap
- Bitmap
- Bitmap
- bitmap
- bitmap
- Bitmap
- Bitmap
- const指针的用法
- Java 简介和开发环境
- 同网段和不同网段设备通信原理详解
- MySql数据库基本操作练习
- 详细分享UICollectionView的自定义布局(瀑布流, 线性, 圆形...)
- Bitmap
- CSS Position属性的学习
- Unity Shaders表面着色器
- Qt:QLineEdit显示字符的4种方式
- NYOJ-37-回文字符串
- Unity实现剧情对话
- 自定义数据类型 --- 类全解(swift2.3)
- iOS下的并行开发
- iOS 地图 MKWebView(在中国是使用高德地图)