当前位置: 首页 > news >正文

算法和数据结构学习中的一些小的工具函数

算法和数据结构学习中的一些小的工具函数

作者:Grey

原文地址:

博客园:算法和数据结构学习中的一些小的工具函数

CSDN:算法和数据结构学习中的一些小的工具函数

提取一个数二进制最右侧的 1

比如二进制为:0100 0001 0001 1011 0001 0001 1001 1000

最右侧的1为: 0000 0000 0000 0000 0000 0000 0000 1000

num & (-num)

num & (~num + 1)

打印一个 32 位整数的二进制形式

public static String getBinary(int num) {StringBuilder sb = new StringBuilder();for (int i = 31; i >= 0; i--) {sb.append(((1 << i) & num) == 0 ? "0" : "1");}return sb.toString();
}

前缀和数组加速求区间和

在数组不可变的情况下,可以使用前缀和数组加速求区间和,描述见:leetcpde 0303 range sum query immutable

    class NumArray {int[] preSum;public NumArray(int[] nums) {preSum = new int[nums.length];preSum[0] = nums[0];for (int i = 1; i < nums.length; i++) {preSum[i] = nums[i] + preSum[i - 1];}}public int sumRange(int left, int right) {if (left == 0) {return preSum[right];}return preSum[right] - preSum[left - 1];}}

注:前缀和只适合数组不可变情况下加速求区间和,如果数组可变,则需要使用线段树或者树状数组来解决这个问题。

要表示 0 ~ range 需要几个二进制位

public static int getNeedBits(int range) {int num = 1;while ((1 << num) - 1 < range) {num++;}return num;
}

[0,x)中的数出现的概率调整成 x 2 x^2 x2

public static double randToPow2() {return Math.max(Math.random(), Math.random());
}

说明:Math.random()表示的是[0,1)区间中任意一个数 X 的概率是 X。

持续更新中

更多

算法和数据结构笔记

http://www.lryc.cn/news/164975.html

相关文章:

  • 解决2K/4K高分屏下Vmware等虚拟机下Kail Linux界面显示问题
  • 【校招VIP】java语言考点之双亲委派模型
  • 2023年阿里云新用户云服务器价格表
  • 信号相关名词概念汇总-采样周期、泄露、窗函数等
  • 数字化新零售营销模式如何落地?数字化新零售营销功能推荐
  • 712. 两个字符串的最小ASCII删除和 -- 动规
  • python中的小tips
  • 高精度(加减乘除)
  • java企业数据管理系统
  • 【云原生进阶之PaaS中间件】第二章Zookeeper-3.1分布式架构介绍
  • 2023-09-11力扣每日一题
  • windows10使用wheel安装tensorflow2.13.0/2.10.0 (保姆级教程)
  • 【LeetCode与《代码随想录》】贪心算法篇:做题笔记与总结-JavaScript版
  • Http客户端OkHttp的基本使用
  • 认识网线上的各种参数标号
  • 软件测开记录(一)
  • 基数排序之代码解析
  • 使用C语言EasyX 创建动态爱心背景
  • springboot redisTemplate.opsForValue().setIfAbsent返回null原理
  • Python调用Jumpserver的Api接口增删改查
  • 后端入门教程:从零开始学习后端开发
  • 无涯教程-JavaScript - DB函数
  • 2023年财务顾问行业研究报告
  • 2023SICTF ROUND2 baby_heap
  • buuctf crypto 【密码学的心声】解题记录
  • 论文阅读 (100):Simple Black-box Adversarial Attacks (2019ICML)
  • 41 个下载免费 3D 模型的最佳网站
  • SpringMVC之JSR303和拦截器
  • 通过rabbitmq生成延时消息,并生成rabbitmq镜像
  • 结构型模式-外观模式