有趣的小算法

找到一个大于等于目标容量的最小的2的幂次方数,常用于实现具有动态扩展能力的数据结构。

示例:HashMap的扩容大小机制。

static final int tableSizeFor(int cap) {int n = cap - 1;n |= n >>> 1;n |= n >>> 2;n |= n >>> 4;n |= n >>> 8;n |= n >>> 16;return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}
  • a. 将n无符号右移一位。
  • b. 对原n和右移后的n进行按位或操作。
  • c. 将结果赋值回n。 

这样做的目的是为了确保n的二进制表示中的所有非零位都被设置为1。这是因为每次右移一位后,原最高位会被移到次高位,并且按位或操作可以保证只要原来的最高位为1,那么新的次高位也将变为1。重复这个过程直到所有可能的位置都被覆盖到,从而得到大于等于目标容量的最小的2的幂次方数。

当cap = 25,最后返回32

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

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

相关文章

特殊二叉树——堆

&#x1f308;一、堆的基本概念 1.堆&#xff1a;非线性结构&#xff0c;是完全二叉树 2.堆分为大堆和小堆。 大堆&#xff1a;树中任意一个父亲都大于等于孩子&#xff0c;根节点值大于等于其所有子孙节点的值。 小堆&#xff1a;树中任意一个父亲都小于等于孩子&#xff0c;…

兼容jlink OB arm仿真器使用(杜邦线过长导致烧写总是失败)

一、兼容jlink OB的使用&#xff1a; 1、设置中要选择jlink&#xff1b; 2、模式选择SWD模式&#xff08;接三根线&#xff09;&#xff1b; 二、杜邦线过长导致stm32的stlink烧写总是失败 用ST-link烧写提示的错误信息有&#xff1a; Error while accessing a target reso…

pandas库

目录 一. numpy库二. pandas库读取文件并查看信息基础统计方法函数reset_index() 三. matplotlib四. SciPy五. scikit-learn六. statsmodels 一. numpy库 NumPy&#xff08;http://numpy.org&#xff09;是Numerical Python的简写&#xff0c;是Python数值计算的基石。它提供多…

Redis中的数据结构

文章目录 第1关&#xff1a;Redis中的数据结构 第1关&#xff1a;Redis中的数据结构 这是上篇文章的第一关&#xff0c;只不过本篇是代码按行做的&#xff0c;方便一下大家使用。 代码如下&#xff1a; redis-cliset hello redislpush educoder-list hellorpush educoder-lis…

51单片机制作数字频率计

文章目录 简介设计思路工作原理Proteus软件仿真软件程序实验现象测量误差和范围总结 简介 数字频率计是能实现对周期性变化信号频率测量的仪器。传统的频率计通常是用很多的逻辑电路和时序电路来实现的&#xff0c;这种电路一般运行较慢&#xff0c;而且测量频率的范围较小。这…

AcWing 511:联合权值 ← DFS、链式前向星

【题目来源】https://www.acwing.com/problem/content/513/【题目描述】无向连通图 G 有 n 个点&#xff0c;n−1 条边。 点从 1 到 n 依次编号&#xff0c;编号为 i 的点的权值为 Wi&#xff0c;每条边的长度均为 1。 图上两点 (u,v) 的距离定义为 u 点到 v 点的最短距离。 对…

torch如何将网络参数初始化,又如何将参数还原成原始状态?

1、将网络参数初始化为原始状态 要将网络参数初始化为原始状态&#xff0c;可以使用PyTorch中的权重初始化方法。常见的权重初始化方式包括正态分布、均匀分布、Xavier初始化等。具体步骤如下&#xff1a; 导入torch和torch.nn模块 import torch import torch.nn as nn定义网…

【SpringCloud】注册中心和Ribbon负载均衡

SpringCloud 1.Eureka注册中心 1.1 Eureka的作用 注册中心拉取服务负载均衡远程调用 order-service得知user-service实例地址流程&#xff1a; user-service服务实例启动后&#xff0c;将自己的信息注册到eureka-server&#xff08;Eureka服务端&#xff09;&#xff0c;称…

linux审计工具aureport

aureport是一个用于查看和分析Linux操作系统中的审计日志的命令行工具。 审计日志是一个记录了系统活动、安全事件和资源访问的详细信息的日志文件。它可以帮助管理员监视和追踪系统上发生的各种活动&#xff0c;包括用户登录、文件访问、进程创建、权限更改等。 aureport命令…

二维数组数组指针相关知识

数组指针&#xff1a;数据类型 (*数组指针变量名)[列宽]&#xff1b;特点&#xff1a;1、本质上是一个指针类型的变量&#xff1b;2、指向的是一个二维数组&#xff0c;即数组指针的列宽等价于二维数组的列宽&#xff1b;例如&#xff1a; int array[2][5] {1,2,3,4,5,6,7,8,9…

redis主从复制模式和哨兵机制

目录 第一章、主从复制模式1.1&#xff09;Redis 主从复制模式介绍1.2&#xff09;Redis 主从复制实现、 第二章、哨兵机制2.1&#xff09;容灾处理之哨兵2.2&#xff09;Sentinel 配置 第一章、主从复制模式 1.1&#xff09;Redis 主从复制模式介绍 ①单点故障&#xff1a;数…

Spring中的事务管理

1 基本概念 事务&#xff1a;将一组操作抽象成一个不可再分的单位&#xff0c;这组操作可以有很多个&#xff0c;但是它们要么就全部都执行成功&#xff0c;这时算作事务执行成功&#xff1b;要不其中有操作执行失败&#xff0c;则其余操作都视为执行失败&#xff0c;这时候需…

二叉树的基本操作实现包括创建二叉树、插入节点、搜索节点、删除节点、遍历二叉树等详解

二叉树的基本操作主要包括创建二叉树、插入节点、搜索节点、删除节点、遍历二叉树等。下面是这些基本操作的 Python 代码实现。 创建二叉树 class TreeNode:def __init__(self, value):self.value valueself.left Noneself.right Noneclass BinaryTree:def __init__(self)…

honle电源维修UV电源控制器EVG EPS40C-HMI

好乐UV电源控制器维修&#xff1b;honle控制器维修&#xff1b;UV电源维修MUC-Steuermodul 2 LΛmpen D-82166 主要维修型号&#xff1a; EVG EPS 60/120、EVG EPS 100、EVG EPS200、EVG EPS 220、EVG EPS 340、EVG EPS40C-HMI、EVG EPS60 HONLE好乐uv电源维修故障包括&#…

localhost和127.0.0.1在以下四个方面存在区别

localhost和127.0.0.1在以下四个方面存在区别&#xff1a; 原理&#xff1a;localhost的原理是不经网卡传输&#xff0c;不会受到网卡协议的限制。而127.0.0.1则是经过网卡传输&#xff0c;依赖网卡协议&#xff0c;并受到网卡相关协议的限制。概念&#xff1a;localhost&…

申请开通QMT量化需要多少资金?免费开通!

最近量化交易在市场上大火&#xff0c;很多投资者想要参与进来。QMT量化软件是目前市场上一款比较常见并且强大的量化软件。那开通QMT量化交易软件需要多少资金&#xff1f; QMT量化交易软件是一种专门用于量化交易的工具&#xff0c;它能够帮助投资者通过程序化交易策略进行股…

如何解决“该公众号提供的服务出现故障,请稍后再试”

出现“该公众号提供的服务出现故障&#xff0c;请稍后再试” &#xff0c; 或者是出现 “公众号接口出现异常&#xff0c;请加入微信群接收接口报警” 的提问&#xff0c; 出现这个一般是开发者自身服务器出现问题导致的。 本文我来教大家如何排查。 第一步&#xff1a;加入告…

【力扣周赛】第 115 场双周赛(⭐优化背包DP)(TODO)

文章目录 竞赛链接Q1&#xff1a;2899. 上一个遍历的整数&#x1f4a9;&#xff08;阅读理解题&#xff0c;按题意模拟&#xff09;Q2&#xff1a;2900. 最长相邻不相等子序列 I&#xff08;贪心&#xff09;Q3&#xff1a;2901. 最长相邻不相等子序列 II&#xff08;类似 最长…

算法通关村第一关—白银挑战—链表高频面试算法题—查找两个链表的第一个公共子节点

文章目录 查找两个链表的第一个公共子节点&#xff08;1&#xff09;暴力求解法&#xff08;2&#xff09;使用哈希Hash⭐&#xff08;3&#xff09;使用集合⭐ - 与Hash类似&#xff08;4&#xff09;使用栈⭐&#xff08;5&#xff09;仍有更多方法&#xff0c;作者尚未理解&…

【小布_ORACLE笔记】Part11-1--RMAN Backups

Oracle的数据备份于恢复RMAN Backups 学习第11章需要掌握&#xff1a; 一.RMAN的备份类型 二.使用backup命令创建备份集 三.创建备份文件 四.备份归档日志文件 五.使用RMAN的copy命令创建镜像拷贝 文章目录 Oracle的数据备份于恢复RMAN Backups1.RMAN Backup Concepts&#x…