leetcode算法-位运算

位运算,直接在二进制上进行的按位操作,位运算的种类如下:

1.按位异或^:异或的含义是操作的两位不同,则结果为1,相同则结果为0,所以两个相同的数异或,结果应该是0,3^3的结果是0,3^4的结果是7(011^100=111),可以看出来异或就是无进位加法啊。异或运算还满足交换律和结合律。a^b^a=b这个其实是因为a^a=0,0^b=b

2.按位与&,操作的两位必须都为1时,结果才为1,1&1=1,1&0=0&1=0&0=0。可以看出来,两个相同的数&运算,得到的还是它自己。两个不同的数计算,得到的是他们相同的位,即取交集

3.按位或|,操作的两位数任意一个为1时,结果就为1,1|1=1|0=0|1=1,0|0=0。可以看出来,两个相同的数|运算,得到的还是它自己,相同不同的数据计算,得到的是他们的并集。

4.按位取反~,这个运算符只有一个操作数,作用就是翻转二进制,如果是有符号的,正负也会随着对调。

5.算数左移<<和算数右移>>,A<<b,将A向左移动b位,空出来的部分补0,右移也是相同的。所以箭头方向就是移动的方向。算数右移可以用来取最小的一位 A&1,A>>1。

典型题目:

461--求汉明距离(二进制不同的位数),先进行异或运算,然后不断的算数右移取最后一位,计算最后一位是1的次数。

190--翻转二进制,把一个10进制的整数按位翻转,按位取反是不行的,因为符号位也会被翻转?

A&1=0 则B<<1 b&1,A&1=1则B<<1,因为算数左移多出来的都是0,所以直接B<<1,B+=A&1即可。

136题,求一个数组内只出现一次的数字,这个解法太巧妙了。x^0=x,x^x=0,而且异或操作是有结合律的,所以异或的顺序并不重要。把所有的数字异或完了,最后还是会剩下单独出现的那一个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/682493.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot743二手交易平台

springboot743二手交易平台 获取源码——》公主号&#xff1a;计算机专业毕设大全

电子元器件基础2---电容

两个相互靠近的导体&#xff0c;中间夹一层不导电的绝缘介质&#xff0c;这就构成了电容器。当电容器的两个极板之间加上电压时&#xff0c;电容器就会储存电荷。电容器的电容量在数值上等于一个导电极板上的电荷量与两个极板之间的电压之比。电容器的电容量的基本单位是法拉(F…

C语言学习day12:for循环

前面学了dowhile循环&#xff0c;今天我们来学习经常用到的for循环&#xff1a; for循环&#xff1a; 例子&#xff1a; int main() {//int i;for (int i 0; i < 10;i) {printf("%d\n",i);};system("pause");return EXIT_SUCCESS; } 解释&#xff…

SNMP 简单网络管理协议、网络管理

目录 1 网络管理 1.1 网络管理的五大功能 1.2 网络管理的一般模型 1.3 网络管理模型中的主要构件 1.4 被管对象 (Managed Object) 1.5 代理 (agent) 1.6 网络管理协议 1.6.1 简单网络管理协议 SNMP 1.6.2 SNMP 的指导思想 1.6.3 SNMP 的管理站和委托代理 1.6.4 SNMP…

Yann LeCun 小传

以下内容整理自 《科学之路》。 Yann LeCun&#xff0c;中文译名杨立昆&#xff0c;1960年出生于法国巴黎附近。他的父亲是一位航空工程师&#xff0c;业余时间喜欢做一些电子产品。 1968年&#xff0c;8岁的杨立昆看了电影《2001太空漫游》。 1978年&#xff0c;高中毕业&a…

AcWing 122 糖果传递(贪心)

[题目概述] 有 n 个小朋友坐成一圈&#xff0c;每人有 a[i] 个糖果。 每人只能给左右两人传递糖果。 每人每次传递一个糖果代价为 1。 求使所有人获得均等糖果的最小代价。 输入格式 第一行输入一个正整数 n&#xff0c;表示小朋友的个数。 接下来 n 行&#xff0c;每行一个…

2.第一个Electron程序

目录 一、前言二、基本运行结构三、代码详解四、打包 一、前言 原文以及系列文章后续请参考&#xff1a;第一个Electron程序 上一章我们完成了Electron的环境搭建&#xff0c;本章就开始详解如何使用Electron开发一个完整的Electron桌面端程序。 注意开发环境&#xff0c;个…

maven仓库的加载步骤

仓库加载步骤 Maven 在判断资源来自哪个仓库时&#xff0c;是根据 Maven 项目的配置以及 Maven 的工作机制来进行判断的。以下是 Maven 判断资源仓库的一般步骤&#xff1a; 从 Maven 项目的 pom.xml 文件中读取配置信息&#xff0c;包括依赖项、仓库设置以及镜像设置。…

【王道数据结构】【chapter5树与二叉树】【P158t6】

二叉树按二叉链表形式存储&#xff0c;试编写一个判别二叉树是否是完全二叉树的算法 #include <iostream> #include <queue> typedef struct treenode{char data;struct treenode *left;struct treenode *right; }treenode,*ptreenode;ptreenode buytreenode(char …

2024.2.14

二维数组实现杨辉三角形 #include<stdio.h> #include<string.h> int main(int argc, const char *argv[]) {int n;scanf("%d",&n);int a[n][n];for(int i0;i<n;i){for(int j0;j<i;j){if(j0||ij){ a[i][j]1;}else{a[i][j]a[i-1][j]a[i-1][j-…

“反内卷”代码书写原则

有人相爱&#xff0c;有人夜里开车看海。有人看着这些代码一句话也说不出来。这是一个你的项目应该遵循的垃圾代码书写准则&#xff0c;只有这样写了才能让人看不懂&#xff0c;这才是真正的反内卷之道&#xff0c;请恪守以下原则&#xff0c;时刻铭记&#xff0c;切勿反向操作…

docker 2:安装

docker 2&#xff1a;安装 ‍ ubuntu 安装 docker sudo apt install docker.io‍ 把当前用户放进 docker 用户组&#xff0c;避免每次运行 docker 命都要使用 sudo​ 或者 root​ 权限。 sudo usermod -aG docker $USER​id $USER ​看到用户已加入 docker 组 ​​ ‍ …

CSS介绍

本章目标&#xff1a; CSS概述 三种样式表 简单选择器 复合选择器 盒子模型 常用背景样式 浮动 常用文本样式 伪类样式 列表样式 表格样式 定位 一、CSS概述: CSS&#xff1a;cascading style sheets-层叠样式表 专门负责对网页的美化 二、有三种使用方式&…

SpringBoot与虚拟线程,接口吞吐量成倍增加,太爽了!

我们看一下如何在spring-boot中利用loom虚拟线程。 我们将做一些负载测试&#xff0c;看看虚拟线程和普通线程的响应时间如何。 让我们快速设置我们的 Spring Boot 项目。 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http:/…

【开源图床】使用Typora+PicGo+Gitee搭建个人博客图床

准备工作&#xff1a; 首先电脑得提前完成安装如下&#xff1a; 1. nodejs环境(node ,npm):【安装指南】nodejs下载、安装与配置详细教程 2. Picgo:【安装指南】图床神器之Picgo下载、安装与配置详细教程 3. Typora:【安装指南】markdown神器之Typora下载、安装与无限使用详细教…

「优选算法刷题」:搜索插入位置

一、题目 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 示例 1: 输入: nums [1,3,5,6], target 5 输出: 2示例…

orbslam_semantic_nav_ros 编译出现的问题1

安装环境 ubuntu20.04 ros NODES 项目链接&#xff1a; https://github.com/MRwangmaomao/semantic_slam_nav_ros 安装腾讯ncnn库 其他库 opencv 3.4.9 eigen 3.4.0 pangolin 已安装 vtk5 自带的是 vtk-7.1 建议自己源码安装 下载链接&#xff1a;https://vtk.org/download/ …

《Docker极简教程》--Docker镜像--Docker镜像的创建和使用

一、Docker 镜像的创建 1.1 基于 Dockerfile 创建镜像 当你基于 Dockerfile 创建镜像时&#xff0c;你需要编写一个描述镜像构建步骤的文本文件&#xff0c;该文件称为 Dockerfile。下面是一个简单的示例 Dockerfile 和相应的说明&#xff1a; # 使用指定的基础镜像 FROM ub…

面试计算机网络框架八股文十问十答第三期

面试计算机网络框架八股文十问十答第三期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;GET和POST请求的区…

JavaScript中如何判断数据类型

在JavaScript中&#xff0c;判断数据类型是我们在日常开发中经常会遇到的问题。正确地判断数据类型不仅有助于我们编写出更加健壮的代码&#xff0c;还可以提高程序的可读性和可维护性。本文将为大家介绍几种判断数据类型的方法 使用typeof运算符&#xff1a; typeof运算符可以…