- 浏览: 183779 次
- 性别:
- 来自: 济南
文章分类
最新评论
这篇文章介绍通过位运算求解子集,反转二进制数,判断是否为2的幂等。
1,Number of 1 Bits
给定一个无符号的整数,输出它包含1的个数。
通过右移,依次与1位与,得到1的个数。 代码如下:
2,Subsets
给定一个没有重复元素的数组,输出所有的子集。
例如:给定nums[] = {1,2,3}
输出:[[3], [1], [2], [1,2,3], [1,3],[2,3],[1,2],[] ]
我们知道长度为n的集合,子集的个数为2的n次方个,我们通过0到2^n - 1正好可以表示子集的状态,具体代码如下:
3,Reverse Bits
给定一个无符号整数n,将它的二进制序列反转。
我们每次取n的最后一位,然后再通过左移,得到最终结果。 代码如下:
4,Bitwise AND of Numbers Range
给定一个范围[m, n],将这个区间所有的数字位与,包括m和n, 0 <= m <= n <= 2147483647,输出最后结果。
例如,给定[5,7],输出:4
进行位与操作,位上有一个0,那么这个位置上肯定为0,因此我们只要从高位开始比较m和n,只要他们相等的位我们就保留,如果不相等就终止,因为后面肯定全为0。因为0 <= m <= n <= 2147483647,因此要把mask设定为长整型,因为把1左移31位后,如果是int型,最高位为符号位,与题意不符。代码如下:
1,Number of 1 Bits
给定一个无符号的整数,输出它包含1的个数。
通过右移,依次与1位与,得到1的个数。 代码如下:
public class Solution { // you need to treat n as an unsigned value public int hammingWeight(int n) { int count = 0; for(int i = 0; i < 32; i++) { if((n >> i & 1) == 1) { count ++; } } return count; } }
2,Subsets
给定一个没有重复元素的数组,输出所有的子集。
例如:给定nums[] = {1,2,3}
输出:[[3], [1], [2], [1,2,3], [1,3],[2,3],[1,2],[] ]
我们知道长度为n的集合,子集的个数为2的n次方个,我们通过0到2^n - 1正好可以表示子集的状态,具体代码如下:
public class Solution { public List<List<Integer>> subsets(int[] nums) { List<Integer> list = new ArrayList<Integer>(); List<List<Integer>> llist = new ArrayList<List<Integer>>(); Arrays.sort(nums); int helper = 1; for(int i = 0; i < Math.pow(2, nums.length); i++) { for(int j = 0; j < nums.length; j++) { if(((i >> j) & helper) == 1) { list.add(nums[j]); } } llist.add(new ArrayList<Integer>(list)); list.clear(); } return llist; } }
3,Reverse Bits
给定一个无符号整数n,将它的二进制序列反转。
我们每次取n的最后一位,然后再通过左移,得到最终结果。 代码如下:
public class Solution { // you need treat n as an unsigned value public int reverseBits(int n) { int result = 0; for(int i = 0; i < 32; i++) { result = result << 1; result |= ((n >> i)& 1); } return result; } }
4,Bitwise AND of Numbers Range
给定一个范围[m, n],将这个区间所有的数字位与,包括m和n, 0 <= m <= n <= 2147483647,输出最后结果。
例如,给定[5,7],输出:4
进行位与操作,位上有一个0,那么这个位置上肯定为0,因此我们只要从高位开始比较m和n,只要他们相等的位我们就保留,如果不相等就终止,因为后面肯定全为0。因为0 <= m <= n <= 2147483647,因此要把mask设定为长整型,因为把1左移31位后,如果是int型,最高位为符号位,与题意不符。代码如下:
public class Solution { public int rangeBitwiseAnd(int m, int n) { int result = 0; long mask = 1L << 31; while(mask > 0) { if((m & mask) == (n & mask)) { result |= (n & mask); } else { break; } mask = mask >> 1; } return result; } }
发表评论
-
498. Diagonal Traverse
2019-11-15 13:52 265Given a matrix of M x N eleme ... -
496 Next Greater Element I
2019-11-14 13:50 267You are given two arrays (witho ... -
Word Break II
2016-03-09 03:15 384Given a string s and a dictiona ... -
Insert Interval
2016-03-08 02:11 374Given a set of non-overlapping ... -
Merge Intervals
2016-03-07 05:25 500Given a collection of intervals ... -
Merge k Sorted Lists
2016-03-07 04:03 563Merge k sorted linked lists and ... -
Multiply Strings
2016-03-06 07:27 475Given two numbers represented a ... -
N-Queens II
2016-03-06 03:06 664Follow up for N-Queens problem. ... -
N-Queens
2016-03-06 02:47 469The n-queens puzzle is the prob ... -
First Missing Positive
2016-03-05 03:09 430Given an unsorted integer array ... -
Spiral Matrix
2016-03-04 03:39 575Given a matrix of m x n element ... -
Trapping Rain Water
2016-03-04 02:54 581Given n non-negative integers r ... -
Repeated DNA Sequences
2016-03-03 03:10 426All DNA is composed of a series ... -
Increasing Triplet Subsequence
2016-03-02 02:48 898Given an unsorted array return ... -
Maximum Product of Word Lengths
2016-03-02 01:56 930Given a string array words, fin ... -
LRU Cache
2016-02-29 10:37 602Design and implement a data str ... -
Super Ugly Number
2016-02-29 07:07 677Write a program to find the nth ... -
Longest Increasing Path in a Matrix
2016-02-29 05:56 845Given an integer matrix, find t ... -
Coin Change
2016-02-29 04:39 783You are given coins of differen ... -
Minimum Height Trees
2016-02-29 04:11 708For a undirected graph with tre ...
相关推荐
前端大厂最新面试题-bit-manipulation.docx 本文档总结了前端大厂的最新面试题,主要集中在位运算方面的知识点。通过对题目的分析,我们可以总结出以下几个方面的知识点: 1. 位运算的基本概念 在计算机科学中,...
`System.loadLibrary("bitmanipulation")`是用来加载本地库的,这里的库名"bitmanipulation"是与C/C++代码中的`.so`文件对应的部分。 接下来,使用`javah`命令生成C语言的头文件(JNI头文件)。在Android Studio的...
- **DML(Data Manipulation Language)数据操作语言**:用于插入(`INSERT`)、更新(`UPDATE`)、删除(`DELETE`)表中的数据。 - **DQL(Data Query Language)数据查询语言**:主要用于检索数据,最常用的命令是...
5. **Bit Manipulation Functions**: `bit bit_variable` 用于声明位变量,`bit_set(bit_variable)`、`bit_clear(bit_variable)` 和 `bit_toggle(bit_variable)` 用于操作位。 在描述中提到的“1时间函数举例4”...
多思考,多总结 刷题顺序参考: Array String Math Tree Backtracking Dynamic Programming LinkedList Binary Search Matrix DFS & BFS Stack & PriorityQueue Bit Manipulation Topological Sort Random Graph ...
13. 对二进制的 1 个数的处理(Bit Manipulation) 对二进制的 1 个数的处理是一种常用的算法,用于处理二进制数中的某一位。该算法广泛应用于计算机科学和信息技术领域。 14. 大数求余(Modular Arithmetic) ...
`set_bit`, `__set_bit`, `clear_bit`, `__change_bit`, `change_bit`, `test_and_set_bit`, `__test_and_set_bit`, `test_and_clear_bit`, `__test_and_clear_bit`, `test_and_change_bit`, `test_bit`, `find_...
DML(Data Manipulation Language)包括插入、修改和删除数据记录的语句。 1. 插入数据记录使用INSERT语句。 2. 修改数据记录使用UPDATE语句。 3. 删除数据记录使用DELETE语句。 五、视图 视图是虚拟表,是从一...
位运算(bit_manipulation_items) 数组中出现次数超过一半的数字(More_than_half_of_the_occurrences_in_the_array.java) 二进制中1的个数(The_number_of_1s_in_binary.java) 主要元素(Main_...
C语言中的位操作(bit manipulation)技巧在此处非常重要,学习者需要了解如何设置、读取和清除单片机寄存器中的特定位来实现数据编码与解码。 3. **中断处理**:单片机通常会利用中断来响应无线接收器接收到的数据...
leetcode 100 很棒的采访资源 ...总结:如何使用Bit Manipulation轻松高效地解决问题 最受欢迎的 100 个问题LeetCode 前100 个问题主题明智 PDF 动态编程模式 竞争性编程的专业提示 用于 C++竞争性编程的快速 I/O
* 二进制数据类型:包括 Binary、Varbinary 和 Image 等数据类型,用于存储图像、照片等二进制数据。 * 字符数据类型:包括 Char、Varchar 和 Text 等数据类型,用于存储字符数据。 * Unicode 数据类型:包括 Nchar...
8. **其他扩展**:还有如BMI(Bit Manipulation Instruction)、FMA(融合乘加)等指令集,分别提供了更高效的位操作和浮点运算。 了解和掌握INTEL指令集对于软件开发、系统编程和优化至关重要。开发者可以通过使用...
以上总结了《Linux核心API文档》中的部分重要知识点,覆盖了驱动程序基础、数据类型处理、基本C库函数以及内存管理等方面的内容。这些知识点对于深入理解和开发基于Linux内核的应用程序具有重要意义。
根据所提供的部分目录,可以看出该文档涵盖了数组(Array)、位操作(Bit Manipulation)、树(Tree)、动态规划(Dynamic Programming)、回溯(Backtracking)、贪心(Greedy)、链表(LinkedList)、数学(Math)和字符串(String)...
- Bit Manipulation(位操作) #### Part II - Coding 这部分涵盖了具体的编程题目及其解决方案,主要针对LeetCode和LintCode上的练习题。 - **String**(字符串处理) - Implement strStr(实现strStr函数) ...
- **1.23 颜色的操纵(Manipulation of colors)** - 讨论了在图像处理中颜色值的操作方法。 - **1.24 2-进制逆和平方根(2-adic inverse and square root)** - 介绍了在2-进制数系下计算逆元和平方根的方法。 - ...
- **Bit Manipulation**:AND、OR、XOR等指令用于执行位操作。 #### 四、应用案例分析 假设在一个高性能计算应用中,需要频繁执行浮点数相加运算。使用MIPS64架构的处理器时,可以通过以下步骤优化性能: 1. **...
2. 位操作(Bit manipulation): - C/C++提供了丰富的位操作符,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移()和右移(>>)等。位操作在处理硬件寄存器、执行效率优化等方面非常有用。 3. 指针和数组: - 在...
根据提供的文件信息,我们可以总结出一系列与计算机信息管理相关的知识点,这些知识点对于准备参加2023-2024年卫生招聘考试的考生来说非常重要。下面将详细解释每个题目涉及的知识点: ### 1. 网络数据库接口 题目...