力扣-位运算-1【算法学习day.41】

前言

###我做这类文档一个重要的目的还是给正在学习的大家提供方向(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非常非常高滴!!!


习题

tip:下面题目套路类似,就不分析了

1.使两个整数相等的位更改次数

题目链接:3226. 使两个整数相等的位更改次数 - 力扣(LeetCode)

题面:

代码:

class Solution {public int minChanges(int n, int k) {if(n==k)return 0;if(n<k)return -1;int ans = 0;while(n>0){if((n&1)==1&&(k&1)==0){ans++;}else if((n&1)==0&&(k&1)==1){return -1; }n>>=1;k>>=1;//  if(max>0&&min==0)return -1;}return ans;}
}

2.根据数字二进制下1的数目排序

题目链接:1356. 根据数字二进制下 1 的数目排序 - 力扣(LeetCode)

题面:

代码:

class Solution {public int[] sortByBits(int[] arr) {int n = arr.length;for(int i = 0;i<n-1;i++){for(int j = i+1;j<n;j++){if(getOneNumber(arr[i])>getOneNumber(arr[j])){swap(arr,i,j);}else if(getOneNumber(arr[i])==getOneNumber(arr[j])&&arr[i]>arr[j]){swap(arr,i,j);}}}  return arr;}public int getOneNumber(int n){int ans = 0;while(n>0){if((n&1)==1){ans++;}n>>=1;}return ans;}public void swap(int[] arr,int i,int j){int flag = arr[i];arr[i] = arr[j];arr[j] = flag;}
}

3.汉明距离

题目链接:461. 汉明距离 - 力扣(LeetCode)

题面:

代码:

class Solution {public int hammingDistance(int x, int y) {int ans = 0;while(x>0||y>0){if((x&1)!=(y&1)){ans++;}x>>=1;y>>=1;}return ans;}
}

4.转换数字的最少位翻转次数

题目链接:2220. 转换数字的最少位翻转次数 - 力扣(LeetCode)

题面:

代码:

class Solution {public int minBitFlips(int start, int goal) {int ans = 0;for(int i = start^goal;i>0;i-=lowbit(i))ans++;return ans;}public int lowbit(int n){return n&(-n);}
}

5.数字的补数

题目链接:476. 数字的补数 - 力扣(LeetCode)

题面:

代码:

class Solution {public int findComplement(int num) {int flag = 0;int flag2 = num;while(num>0){flag<<=1;flag+=1;num>>=1;}return flag^flag2;}
}

6.十进制整数的反码

题目链接:1009. 十进制整数的反码 - 力扣(LeetCode)

题面:

代码:

class Solution {public int bitwiseComplement(int n) {if(n==0)return 1;int flag = n;int flag2 = 0;while(n>0){flag2<<=1;flag2+=1;n>>=1;}return flag^flag2;}
}

7.二进制间距

题目链接:868. 二进制间距 - 力扣(LeetCode)

题面:

代码:

class Solution {public int binaryGap(int n) {int max = 0;int[] arr = new int[40];int count = 0;for(int i = n;i>0;i-=lowbit(i)){int flag = lowbit(i);arr[count++] = (int)(Math.log(flag)/Math.log(2))+1;}for(int i = 1;i<count;i++){max = Math.max(max,arr[i]-arr[i-1]);}return max;}public int lowbit(int n){return n&(-n);}
}

8.生成不含相邻零的二进制字符串

题目链接:3211. 生成不含相邻零的二进制字符串 - 力扣(LeetCode)

题面:

代码: 

class Solution {List<String> ans = new ArrayList<>();int n;public List<String> validStrings(int n) {this.n = n;recursion(1,"",0);return ans;}public void recursion(int t,String str,int flag){if(t==n+1){ans.add(str);return;}if(t==1||flag==1){recursion(t+1,str+"0",0);recursion(t+1,str+"1",1);}else if(flag==0){recursion(t+1,str+"1",1);}}
}

9.找出数组中的K-or值

题目链接:2917. 找出数组中的 K-or 值 - 力扣(LeetCode)

题面:

代码:

class Solution {public int findKOr(int[] nums, int k) {int n = nums.length;int ans = 0;for (int i = 0; i < 31; i++) {int sum = 0;for (int j = 0; j < n; j++) {sum+=(nums[j] & 1);nums[j] >>= 1;}  if(sum>=k){ans |= 1 << i;    }}return ans;}
}

10.交替位二进制数

题目链接:693. 交替位二进制数 - 力扣(LeetCode)

题面:

代码:

class Solution {public boolean hasAlternatingBits(int n) {int len = (int)(Math.log(n)/Math.log(2))+1;int flag = n&1;n>>=1;for(int i = 1;i<len;i++){int lin = n&1;if(lin==flag)return false;flag = lin;n>>=1;}return true;}
}

11.找到两个数组的前缀公共数组

题目链接:2657. 找到两个数组的前缀公共数组 - 力扣(LeetCode)

题面:

代码:

class Solution {public int[] findThePrefixCommonArray(int[] A, int[] B) {int n  = A.length;int[] ans = new int[n];long flaga = 0;long flagb = 0;for(int i = 0;i<n;i++){int a = A[i];int b = B[i];flaga|=(1L<<(a-1));flagb|=(1L<<(b-1));long lin = (flaga&flagb);ans[i] = Long.bitCount(lin);}return ans;}// public long lowbit(long n){//     return n&(-n);// }
}

后言

上面是力扣位运算专题,下一篇是其他的习题,希望有所帮助,一同进步,共勉!

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

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

相关文章

科研深度学习:如何精选GPU以优化服务器性能

GPU在科研深度学习中的核心价值 在科研深度学习的范畴内&#xff0c;模型训练是核心环节。面对大规模参数的模型训练&#xff0c;这往往是科研过程中最具挑战性的部分。传统CPU的计算模式在处理复杂模型时&#xff0c;训练时间会随着模型复杂度的增加而急剧增长&#xff0c;这…

ssm面向品牌会员的在线商城小程序

摘要 随着Internet的发展&#xff0c;人们的日常生活已经离不开网络。未来人们的生活与工作将变得越来越数字化&#xff0c;网络化和电子化。它将是直接管理面向品牌会员的在线商城小程序的最新形式。本小程序是以面向品牌会员的在线商城管理为目标&#xff0c;使用 java技术制…

客户流失分析综述

引言 客户流失这个术语通常用来描述在特定时间或合同期内停止与公司进行业务往来的客户倾向性[1]。传统上&#xff0c;关于客户流失的研究始于客户关系管理&#xff08;CRM&#xff09;[2]。在运营服务时&#xff0c;防止客户流失至关重要。过去&#xff0c;客户获取相对于流失…

大数据技术之SparkCore

RDD概述 什么是RDD RDD&#xff08;Resilient Distributed Dataset&#xff09;叫做弹性分布式数据集&#xff0c;是Spark中最基本的数据抽象。代码中是一个抽象类&#xff0c;它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。 RDD五大特性 RDD编程 RDD的创…

可视化建模与UML《协作图实验报告》

有些鸟儿毕竟是关不住的。 一、实验目的&#xff1a; 1、熟悉协作图的构件事物。 2、掌握协作图的绘制方法。 二、实验环境&#xff1a; window7 | 10 | 11 EA15 三、实验内容&#xff1a; 下面列出了打印文件时的工作流&#xff1a; 用户通过计算机指定要打印的文件。(2)打…

(附项目源码)Java开发语言,219 ssm律师事务所业务管理系统的设计与实现,计算机毕设程序开发+文案(LW+PPT)

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;律师事务所业务管理系统当然也不能排除在外。律师事务所业务管理系统是以实际运用为开发背景&#xff0c;运用软件工程原…

Chrome和edge浏览器如何为任何网站强制暗模式

前言 因为我的编辑器是黑色&#xff0c;可能是看的时间长了比较喜欢这种颜色了&#xff0c;感觉白色有些刺眼。尤其是看文章时&#xff0c;两边的空白纯白色&#xff0c;所以强迫症搜素设置了谷歌浏览器和edge如何设置成黑色。 Chrome和edge浏览器如何为任何网站强制暗模式 前…

【Linux】vim的使用

进入vim vim是一款编辑器。自带&#xff0c;使用成本较高。 touch code.c我们创建一个普通文件&#xff0c;然后vim code.c&#xff0c;进入vim。 想要退出vim&#xff0c;怎么做&#xff1f; &#xff08;因为当前我们不知道在什么模式下&#xff09;&#xff0c;我们先按…

计算机网络-VPN虚拟专用网络概述

前面我们学习了在企业内部的二层交换机网络、三层路由网络包括静态路由、OSPF、IS-IS、NAT等&#xff0c;现在开始学习下VPN&#xff08;Virtual Private Network&#xff0c;虚拟专用网络&#xff09;&#xff0c;其实VPN可能很多人听到第一反应就是梯子&#xff0c;但是其实这…

【AI最前线】DP双像素sensor相关的AI算法全集:深度估计、图像去模糊去雨去雾恢复、图像重建、自动对焦

Dual Pixel 简介 双像素是成像系统的感光元器件中单帧同时生成的图像&#xff1a;通过双像素可以实现&#xff1a;深度估计、图像去模糊去雨去雾恢复、图像重建 成像原理来源如上&#xff0c;也有遮罩等方式的pd生成&#xff0c;如图双像素视图可以看到光圈的不同一半&#x…

Spark——安装步骤详细教程

1、安装步骤 1、上传 cd /opt/modules 2、解压 tar -zxf spark-3.1.2-bin-hadoop3.2.tgz -C /opt/installs 3、重命名 cd /opt/installs mv spark-3.1.2-bin-hadoop3.2 spark-local 4、创建软链接 ln -s spark-local spark 5、配置环境变量&#xff1a; vi /etc/prof…

Java语言程序设计 选填题知识点总结

第一章 javac.exe是JDK提供的编译器public static void main (String args[])是Java应用程序主类中正确的main方法Java源文件是由若干个书写形式互相独立的类组成的Java语言的名字是印度尼西亚一个盛产咖啡的岛名Java源文件中可以有一个或多个类Java源文件的扩展名是.java如果…

项目学习:仿b站的视频网站项目03-注册功能

概括 通过上一期&#xff0c;完成了项目和数据库的基础结构的搭建&#xff0c;接下来主要是完成项目的注册功能。该功能模块主要分为有两个接口&#xff0c;一个是验证码接口&#xff0c;一个是注册接口。 让我们开始吧&#xff01; 验证码接口 验证码的生成主要配合下面这…

Linux——进程间通信之管道

进程间通信之管道 文章目录 进程间通信之管道1. 进程间通信1.1 为什么要进行进程间的通信1.2 如何进行进程间的通信1.3 进程间通信的方式 2. 管道2.1 匿名管道2.1.1 系统调用pipe()2.1.2 使用匿名管道进行通信2.1.1 匿名管道四种情况2.1.2 匿名管道的五大特性2.1.3 进程池 2.2 …

使用chrome 访问虚拟机Apache2 的默认页面,出现了ERR_ADDRESS_UNREACHABLE这个鸟问题

本地环境 主机MacOs Sequoia 15.1虚拟机Parallels Desktop 20 for Mac Pro Edition 版本 20.0.1 (55659)虚拟机-操作系统Ubuntu 22.04 服务器版本 最小安装 开发环境 编辑器编译器调试工具数据库http服务web开发防火墙Vim9Gcc13Gdb14Mysql8Apache2Php8.3Iptables 第一坑 数…

海洋通信船舶组网工业4G路由器应用

船舶是浩瀚海洋中探索与贸易的载体&#xff0c;更是船员们生活与工作的家园。为了在广阔的水域中搭建起稳定、高效的网络桥梁&#xff0c;工业4G路由器以卓越的通信组网能力&#xff0c;为船舶组网提供网络支持。 工业4G路由器以其强大的信号发射能力&#xff0c;确保船舶内部…

分类算法——基于heart数据集实现

1 heart数据集——描述性统计分析 import matplotlib.pyplot as plt import pandas as pd# Load the dataset heart pd.read_csv(r"heart.csv", sep,)# Check the columns in the DataFrame print(heart.columns)aheart.loc[:, y].value_counts() print(a) heart.l…

力扣面试经典 150(上)

文章目录 数组/字符串1. 合并两个有序数组2. 移除元素3. 删除有序数组中的重复项4. 删除有序数组的重复项II5. 多数元素6. 轮转数组7. 买卖股票的最佳时机8. 买卖股票的最佳时机II9. 跳跃游戏10. 跳跃游戏II11. H 指数12. O(1)时间插入、删除和获取随机元素13. 除自身以外数组的…

Vue3-后台管理系统

目录 一、完成项目历程 1、构建项目 2、项目的自定义选项 3、 封装组件 4、配置对应页面的路由 5、从后端调接口的方式 二、引入Element Plus、Echarts、国际化组件 1、Element Plus安装 2、Echarts安装 3、国际化 三、介绍项目以及展示 1、项目是基于Vue3、Element …

mq 消费慢处理方式,rocketmq消费慢如何处理,mq如何处理消费端消费速率慢。rocketmq优化

1. 问题&#xff1a;mq消费慢&#xff0c;如何加快处理速度 2. 分析&#xff1a; 没想到吧&#xff0c;官网上就有处理方式。&#xff01; 3.链接&#xff1a; 基本最佳实践 | RocketMQ 4. 处理方式&#xff1a; 4.1 提高消费并行度 4.1.1 加机器&#xff0c;配置多个消费服…