数据结构-位运算笔记

基础

【位运算】——揭秘位运算:高效解题的关键技巧_常见位运算-CSDN博客

位1的个数

class Solution {// 定义一个公共方法hammingWeight,它接受一个整数n作为参数,并返回一个整数。public int hammingWeight(int n) {// 初始化一个变量ret,用来存储汉明权重的结果,初始值为0。int ret = 0;// 循环32次,因为一个整数(int类型)在Java中是32位的。for (int i = 0; i < 32; i++) {// 使用位运算符"&"和左移操作"<<"来检查n的第i位是否为1。// (n & (1 << i)) != 0 这个表达式的意思是,将1左移i位后与n进行按位与操作。// 如果结果不为0,说明n的第i位是1。if ((n & (1 << i)) != 0) {// 如果第i位是1,那么将ret加1,因为汉明权重就是1的个数。ret++;}}// 循环结束后,返回计算得到的汉明权重。return ret;}
}

Pow(x, n)

class Solution {// 计算x的n次幂// x: 底数// n: 指数,可以是正数或负数public double myPow(double x, int n) {// 将n转换为长整型,以处理大整数long N = n;// 如果N是非负数,直接计算x的N次幂// 如果N是负数,计算x的(-N)次幂,然后取倒数return N >= 0 ? pow(x, N) : 1.0 / pow(x, -1 * N);}// 递归方法,用于计算x的N次幂// x: 底数// N: 指数,长整型,用于处理大整数double pow(double x, long N) {// 如果指数N为0,任何数的0次幂都是1if (N == 0) {return 1.0;}// 递归计算x的N/2次幂double y = pow(x, N / 2);// 如果N是偶数,那么x^N = (x^(N/2))^2// 如果N是奇数,那么x^N = x * (x^(N/2))^2return N % 2 == 0 ? y * y : y * y * x;}
}

撞色搭配

class Solution {public int[] sockCollocation(int[] sockets) {// 初始化变量// n 用于存储所有插座的异或结果int n = 0;// m 用于找到 n 中最低位的 1int m = 1;// p 和 q 分别用于存储与 m 位为 1 和 0 的插座的异或结果int p = 0;int q = 0;// 计算所有插座的异或结果for(int socket : sockets){n ^= socket;}// 找到 n 中最低位的 1while((n & m) == 0){m <<= 1; // 将 m 左移一位,直到找到 n 的最低位 1}// 根据 m 的最低位 1,将插座分为两组,并计算每组的异或结果for(int socket : sockets){if((socket & m) != 0){ // 如果插座的 m 位为 1p ^= socket; // 将该插座加入到 p 的异或计算中}else{ // 如果插座的 m 位为 0q ^= socket; // 将该插座加入到 q 的异或计算中}}// 返回两种不同插座的二进制表示return new int[]{p, q};}
}

训练计划 VI

class Solution {public int trainingPlan(int[] actions) {// 创建一个长度为32的数组,用于统计每个位上1的个数int demo[] = new int[32];// 遍历actions数组中的每个整数for(int action : actions){// 从最低位开始,逐位检查action中的每个位for(int i = 0 ; i < 32; i++){// 如果当前位是1,则在demo数组对应的位置上加1demo[i] += action & 1;// 将action右移一位,准备检查下一位action >>= 1;}}// 初始化变量m为3,表示每个位上1的最大个数int m = 3;// 初始化返回值ret为0int ret = 0;// 从最高位开始,逆序遍历demo数组for(int i = 31; i >= 0; i--){// 将ret左移一位,为新的位腾出空间ret <<= 1;// 将demo[i]除以m的余数作为新的位加到ret上ret |= demo[i] % m;}// 返回构造好的整数return ret;}
}

加密运算

class Solution {/*** 进行加密计算的方法。* 这个方法使用异或运算和位移运算来加密两个整数。* @param dataA 第一个整数数据。* @param dataB 第二个整数数据。* @return 加密后的结果。*/public int encryptionCalculate(int dataA, int dataB) {// 进位int nextPoi; // 用于存储进位值// 本位int localPoi; // 这个变量实际上没有在代码中使用,可能是一个遗留的变量// 使用while循环,直到dataA变为0while(dataA != 0){// 计算进位值,即dataA和dataB按位与的结果左移1位nextPoi = (dataA & dataB) << 1;// 将dataB和dataA进行异或运算,更新dataB的值dataB ^= dataA;// 将进位值赋给dataA,用于下一次循环dataA = nextPoi;}// 当dataA为0时,循环结束,返回dataB,即加密后的结果return dataB;}
}

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

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

相关文章

【计算机网络】多路转接之poll

poll也是一种linux中的多路转接方案(poll也是只负责IO过程中的"等") 解决&#xff1a;1.select的fd有上限的问题&#xff1b;2.每次调用都要重新设置关心的fd 一、poll的使用 int poll(struct pollfd *fds, nfds_t nfds, int timeout); ① struct pollfd *fds&…

【C语言】深入剖析 C 语言中数组与指针的紧密联系及高效应用

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;例一&#xff1a;指针偏移遍历数组1.1 代码回顾1.2 代码分析1.3 理论扩展&#xff1a;数组与指针的关系1.4 数组与指针的应用场景 &#x1f4af;例二&#xff1a;自定义…

基于SpringBoot的数据结构系统设计与实现(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

算法训练-双指针

双指针 leetcode392. 判断子序列 法一&#xff1a;动态规划 法二&#xff1a;双指针 leetcode876. 链表的中间结点 法一&#xff1a;链表数组 法二&#xff1a;快慢指针 leetcode160. 相交链表 法一&#xff1a;双指针 leetcode167. 两数之和 II - 输入有序数组 法一&…

零基础学指针(上)

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…

shell编程之sed

sed 是一种流编辑器&#xff0c;它是文本处理中非常有用的工具&#xff0c;能够完美的配合正则表达式使用&#xff0c;处理时&#xff0c;把当前处理的行存储在临时缓冲区中&#xff0c;称为模式空间&#xff0c;接着用sed 命令处理缓冲区中的内容&#xff0c;处理完成 后&…

一文学习开源框架OkHttp

OkHttp 是一个开源项目。它由 Square 开发并维护&#xff0c;是一个现代化、功能强大的网络请求库&#xff0c;主要用于与 RESTful API 交互或执行网络通信操作。它是 Android 和 Java 开发中非常流行的 HTTP 客户端&#xff0c;具有高效、可靠、可扩展的特点。 核心特点 高效…

多目标优化算法:多目标极光优化算法(MOPLO)求解ZDT1、ZDT2、ZDT3、ZDT4、ZDT6,提供完整MATLAB代码

一、极光优化算法 极光优化算法&#xff08;Polar Lights Optimization, PLO&#xff09;是2024年提出的一种新型的元启发式优化算法&#xff0c;它从极光这一自然现象中汲取灵感。极光是由太阳风中的带电粒子在地球磁场的作用下&#xff0c;与地球大气层中的气体分子碰撞而产…

【贪心算法第二弹——2208.将数组和减半的最小操作数】

1.题目解析 题目来源 2208.将数组和减半的最小操作数——力扣 测试用例 2.算法原理(贪心策略) 3.实战代码 class Solution { public:int halveArray(vector<int>& nums) {priority_queue<double> hash;double sum 0.0;for(auto e : nums){hash.push(e);sum …

2024最新python使用yt-dlp

2024最新python使用yt-dlp下载YT视频 1.获取yt的cookie1&#xff09;google浏览器下载Get cookies.txt LOCALLY插件2&#xff09;导出cookie 2.yt-dlp下载[yt-dlp的GitHub地址](https://github.com/yt-dlp/yt-dlp?tabreadme-ov-file)1&#xff09;使用Pycharm(2024.3)进行代码…

深入理解下oracle 11g block组成

深层次说&#xff0c;oracle数据库的最少组成单位应该是块&#xff0c;一般默认情况下&#xff0c;oracle数据库的块大小是8kb&#xff0c;其中存储着我们平常所需的数据。我们在使用过程中&#xff0c;难免会疑问道&#xff1a;“oracle数据块中到底是怎样组成的&#xff0c;平…

2024年12月Gesp七级备考知识点拾遗第一期(图的定义及遍历)

目录 总序言 知识点拾遗​编辑 度数 环 二叉树 图的遍历 深度优先 广度优先 连通与强连通 有什么不同 构成分别至少需要几条边&#xff08;易错题&#xff09;&#xff1f; 无向连通图 有向强连通图 完全图 什么是完全图 无向完全图最少边数 有向完全图最少边…

家庭智慧工程师:如何通过科技提升家居生活质量

在今天的数字化时代&#xff0c;家居生活已经不再只是简单的“住”的地方。随着物联网&#xff08;IoT&#xff09;、人工智能&#xff08;AI&#xff09;以及自动化技术的快速发展&#xff0c;越来越多的家庭开始拥抱智慧家居技术&#xff0c;将他们的家变得更加智能化、便捷和…

图像处理实验报告

实验一 图像处理的MATLAB基础 实验目的&#xff1a;熟悉数字图象处理的基本软件工具和操作 实验内容&#xff1a;Matlab应用复习&#xff0c;矩阵产生、操作&#xff1b;矩阵运算以及字符运算。 1.利用增量产生向量[0,2,4,6,8,10]。 2.利用magic(n)函数产生7维魔鬼矩阵A&am…

SpringBoot+SpringCloud面试题整理附答案

什么是SpringBoot&#xff1f; 1、用来简化spring初始搭建和开发过程使用特定的方式进行配置(properties或者yml文件) 2、创建独立的spring引用程序main方法运行 3、嵌入Tomcat无需部署war包&#xff0c;直接打成jar包nohup java -jar – & 启动就好 4、简化了maven的配置 …

Linux之管道,system V的共享内存,消息队列和信号量

Linux之管道&#xff0c;systemV共享内存和信号量 一.进程间通信1.1进程间通信的目的1.2进程间通信的方式 二.管道2.1管道的概念2.2匿名管道2.3命名管道 三.system V3.1共享内存3.2消息队列3.3信号量 一.进程间通信 在我们之前有关Linux指令的学习时我们使用过“|”这个命令&a…

Figma入门-基本操作制作登录页

Figma入门-基本操作制作登录页 前言 在之前的工作中&#xff0c;大家的原型图都是使用 Axure 制作的&#xff0c;印象中 Figma 一直是个专业设计软件。 最近&#xff0c;很多产品朋友告诉我&#xff0c;很多原型图都开始用Figma制作了&#xff0c;并且很多组件都是内置的&am…

Django实现智能问答助手-数据库方式读取问题和答案

扩展 增加问答数据库&#xff0c;通过 Django Admin 添加问题和答案。实现更复杂的问答逻辑&#xff0c;比如使用自然语言处理&#xff08;NLP&#xff09;库。使用前端框架&#xff08;如 Bootstrap&#xff09;增强用户界面 1.注册模型到 Django Admin&#xff08;admin.py…

SQL注入--文件读写注入--理论

什么是文件读写注入&#xff1f; MySQL中有 读取文件的函数&#xff1a;load_file() 写入文件的函数&#xff1a;Into outfile&#xff08;能写入多行&#xff0c;按格式输出&#xff09;和 into dumpfile&#xff08;只能写入一行且没有输出格式&#xff09; 利用这些函数在S…

《最小生成树算法详解:Kruskal的优雅实现》

前置知识和本篇介绍 前置知识&#xff1a; 数据结构-优先级队列&#xff0c; 数据结构-并查集。 Kruskal算法不需要建图&#xff0c; 因此不会建图的模板也没事。 本篇介绍一最小生成树的概念和Kruskal算法。 有关prim算法&#xff08;另一种最小生成树的算法&#xff09;&am…