
位运算
C++
Crystal_Coding
这个作者很懒,什么都没留下…
展开
-
leetcode201. 数字范围按位与
文章目录题目:201. 数字范围按位与基本思想:边界的最长公共前缀题目:201. 数字范围按位与给定范围 [m, n],其中 0 <= m <= n <= 2147483647,返回此范围内所有数字的按位与(包含 m, n 两端点)。示例 1:输入: [5,7]输出: 4示例 2:输入: [0,1]输出: 0来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/bitwise-and-of-numbers-range原创 2020-08-23 15:22:09 · 198 阅读 · 0 评论 -
leetcode面试题56 - I. 数组中数字出现的次数
一个整型数组 nums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n),空间复杂度是O(1)。示例 1:输入:nums = [4,1,4,6]输出:[1,6] 或 [6,1]示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2] 限制:2 <= nums <= 1...原创 2020-04-28 18:35:54 · 219 阅读 · 0 评论 -
leetcode136.只出现一次的数字
给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?示例 1:输入: [2,2,1]输出: 1示例 2:输入: [4,1,2,1,2]输出: 4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/singl...原创 2020-02-05 16:46:36 · 110 阅读 · 0 评论 -
leetcode29.两数相除
给定两个整数,被除数 dividend 和除数 divisor。将两数相除,要求不使用乘法、除法和 mod 运算符。返回被除数 dividend 除以除数 divisor 得到的商。示例 1:输入: dividend = 10, divisor = 3输出: 3示例 2:输入: dividend = 7, divisor = -3输出: -2说明:被除数和除数均为 32 位有...原创 2020-01-03 15:37:18 · 193 阅读 · 0 评论 -
位运算总结
编程中常用到的乘除取余,可以用位与运算来代替,来优化代码:除以2:用右移一位来代替:a/2=>a>>1a/2=>a>>1a/2=>a>>1乘以2:用左移一位来代替:a∗2=>a<<1a*2=>a<<1a∗2=>a<<1判断一个数的奇偶,常用取余运算来判断,这里用位与来判断a&a...原创 2020-01-01 21:07:07 · 150 阅读 · 0 评论 -
剑指offer65.不用加减乘除做加法
题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。完整代码解题思想这道题最关键的是解题思路:两步走:用二进制的运算来实现相加计算各位的值,不算进位值:5+7=>2计算进位值:5+7的进位值为10,如果进位值为0,那么上一步就是计算结果如何用二进制的运算来实现这两步:相加计算各位的值: 用异或来实现(只进行加法操作,不进位得到...原创 2019-11-27 21:02:55 · 171 阅读 · 0 评论 -
剑指offer56.数组中只出现一次的数字
题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。完整代码借助vector来实现遍历数组,每访问一个元素,判断res中是否有该元素,如果有将其删除,否则,将其插入。最后,res中剩余的元素就是只出现1次的数字。class Solution {public: void FindNumsAppearOnce(vector<in...原创 2019-11-07 20:56:52 · 158 阅读 · 0 评论 -
剑指offer15.二进制中1的个数
题目描述输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。题目分析:其实,正数和负数的区别就在于,负数的最高位是1,那么在计算的过程中,可以将负数当作正数来处理,只不过最终结果+1就是了。!!!>_<:这样看来:题目中的:其中负数用补码表示,具有一定的迷惑性。...原创 2019-10-11 20:52:30 · 168 阅读 · 0 评论