BitMap算法
来源:互联网 发布:淘宝改版 编辑:程序博客网 时间:2024/06/16 12:06
二进制运算
BitMap算法的数据如何存储
Leetcode bitmap算法题目 Two Sum 解析
原题
原题通过答案:
import java.util.Hashtable;public class Solution { public int[] twoSum(int[] nums, int target) { int[] b=new int[2]; Hashtable<Integer,Integer> ht=new Hashtable<Integer,Integer>(); for (int i = 0; i < nums.length; i++) { ht.put(target-nums[i], target-nums[i]); } for (int i = 0; i < nums.length; i++) { if(ht.containsKey(nums[i])){ for (int j = i+1; j < nums.length; j++) { if(target-nums[j]==nums[i]){ b[0]=i; b[1]=j; return b; } } } } return b; }}
这个算法无法通过:
/** * 使用BitMap算法存储元素,目前来看只能存储正整数(不重复) * 一个int,存储32个数,0-31 * 00001 代表第0位有数字 0 * 00010 代表第1位有数字 1 * 00011 代表第0,1位都有数字 0,1,这就存储了两个数0,1 * 11111 存储了0,1,2,3,4五个整数 * @author Administrator * */public class BitMapTwoSum { private static int[] a=new int[1+10000000/32]; public static void main(String[] args) { int[] nums = {3,2,4}; int[] b=twoSum(nums,6); for (int i = 0; i < b.length; i++) { System.out.println(b[i]); } } public static int[] twoSum(int[] nums, int target) { int[] b=new int[2]; for (int i = 0; i < nums.length; i++) { set(target-nums[i]); } for (int i = 0; i < nums.length; i++) { if(check(nums[i])>0){ for (int j = i+1; j < nums.length; j++) { if((target-nums[j])==nums[i]){ b[0]=i; b[1]=j; return b; } } } } return b; } public static void set(int i){ a[i>>5] |= (1<<(i & 31)); } public static int check(int i){ return a[i>>5] & (1<<(i & 31)); }}
0 0
- bitmap算法
- BitMap算法
- bitmap算法
- bitmap算法
- Bitmap算法
- BitMap算法
- bitmap算法
- bitmap算法
- Bitmap算法
- Bitmap 算法
- bitMap算法
- Bitmap算法
- BitMap算法
- Bitmap算法
- Bitmap算法
- Bitmap算法
- bitmap算法
- bitmap算法
- 编译环境变量
- WordCount单词计数
- C语言---交换两个数的内容(谷歌面试题)
- GPS定位、基站定位、wifi定位
- 感知器法则
- BitMap算法
- Android截屏的简单实现
- java(优化21) httpClient使用详解
- winform项目的app.config和exe.config文件
- think中用phpmailer发送邮件教程
- 1.1_Android Training 学习笔记_建立第一个App
- Linux rpm删除MySQL
- 布局从navigation顶部开始问题
- Sublime Text3注册及汉化(支持Windows、MAC OS)