当前位置: 首页 > 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。

持续更新中

更多

算法和数据结构笔记

相关文章:

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

算法和数据结构学习中的一些小的工具函数 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;算法和数据结构学习中的一些小的工具函数 CSDN&#xff1a;算法和数据结构学习中的一些小的工具函数 提取一个数二进制最右侧的 1 比如二进制为&#xff1a;0100 0…...

解决2K/4K高分屏下Vmware等虚拟机下Kail Linux界面显示问题

问题现象 在我们日常使用VirtualBox、Vmware workstation、Hyper-V等虚拟机安装使用Kali系统&#xff0c;在2K/4K高分辨率电脑下Kali系统界面显示太小&#xff0c;包括各种软件及命令终端字体均无法很直观的看出&#xff0c;影响我们的正常测试及使用。 常规处理思路 很多人…...

【校招VIP】java语言考点之双亲委派模型

考点介绍&#xff1a; 双亲委派是校招面试中的高频考点之一。双亲委派机制定义: 当一个类加载器收到了类加载的请求的时候&#xff0c;他不会直接去加载指定的类&#xff0c;而是把这个请求委托给自己的父加载器去加载&#xff0c;只有父加载器无法加载这个类的时候&#xff0…...

2023年阿里云新用户云服务器价格表

阿里云&#xff0c;作为国内领先的云计算服务提供商&#xff0c;一直致力于为全球用户提供安全、稳定、高效的云计算服务。对于新用户来说&#xff0c;阿里云服务器是一个非常不错的选择。那么&#xff0c;阿里云新用户云服务器的价格是怎样的呢&#xff1f;本文将为大家详细介…...

信号相关名词概念汇总-采样周期、泄露、窗函数等

信号相关名词概念汇总-采样周期、泄露、窗函数等 以下为信号相关名词概念的汇总 1 名词解释 采样周期/间隔&#xff1a;采样频率的倒数&#xff0c;两次相邻采样之间的时间间隔采样时间&#xff1a;采样的总时长&#xff0c;即采样点数N和采样周期的乘积采样频率&#xff1a; …...

数字化新零售营销模式如何落地?数字化新零售营销功能推荐

​通过科技手段&#xff0c;针对对线下零售店面的客户进行消费行为、频次等的分析&#xff0c;并进一步整合线上线下资源&#xff0c;实现实体零售的效率充分化&#xff0c;便是目前很火的新零售营销模式&#xff0c;能够将实体门店与数字化技术进行有机结合&#xff0c;通过为…...

712. 两个字符串的最小ASCII删除和 -- 动规

712. 两个字符串的最小ASCII删除和 class MinimumDeleteSum:"""712. 两个字符串的最小ASCII删除和https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/"""def solution(self, s1: str, s2: str) -> int:""&qu…...

python中的小tips

1、注释 1、注释快捷键&#xff1a; Ctrl/ 可以注释掉光标所在的这一行&#xff0c;或者是选中的区域。 对于注释掉的这一行或者这一区域&#xff0c;按下ctrl/则会去掉注释。 2、多行注释 在写多行注释时&#xff0c;英文状态下写三个"&#xff0c;会自动变成六个"&…...

高精度(加减乘除)

高精度算法出现的原因 当参与运算的数的范围大大的超出了标准数据类型&#xff0c;如int&#xff08;-2147483648 ~ 2147483647&#xff09;或者long long的范围&#xff0c;就需要使用高精度算法来进行数的运算。高精度运算的特点是代码长度比较长&#xff0c;本质是对数学运算…...

java企业数据管理系统

项目介绍 此项目为企业数据管理系统的后端部分&#xff0c;前端部分请参考vue-admin&#xff0c;项目实现了菜单管理、用户管理、角色管理和权限管理四个基础模块&#xff0c;前端菜单管理结合动态路由可自由添加菜单。结合Shiro权限管理实现了菜单和按钮的权限控制。 ❝ 前端…...

【云原生进阶之PaaS中间件】第二章Zookeeper-3.1分布式架构介绍

1 分布式架构详解 1.1 分布式发展历程 1.1.1 单点集中式 特点&#xff1a;App、DB、FileServer都部署在一台机器上。并且访问请求量较少 1.1.2 应用服务和数据服务拆分 特点&#xff1a;App、DB、FileServer分别部署在独立服务器上。并且访问请求量较少 1.1.3 使用缓存改善…...

2023-09-11力扣每日一题

链接&#xff1a; 630. 课程表 III 题意 一个课程花费ai天&#xff0c;需要在bi天之前修好才算成功&#xff0c;求最多能修几个课 解&#xff1a; ddl越靠后的应该越晚做&#xff0c;所以先按照b排序&#xff08;这还用问为什么吗&#xff1f; 然后通过维护一个优先队列存…...

windows10使用wheel安装tensorflow2.13.0/2.10.0 (保姆级教程)

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的python解释器&#xff0c;并使用tensorflow常见错误 注意&#xff1a; t…...

【LeetCode与《代码随想录》】贪心算法篇:做题笔记与总结-JavaScript版

代码随想录 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 文章目录 455. 分发饼干376. 摆动序列53. 最大子数组和122. 买卖股票的最佳时机 II55. 跳跃游戏45. 跳跃游戏 II1005. K 次取反后最大化的数组和134. 加油站135. 分发糖果&#xff08;困难&#…...

Http客户端OkHttp的基本使用

简介 OkHttp是一个强大的开源HTTP客户端&#xff0c;它被广泛用于Android和Java应用程序中。OkHttp具有简单易用的API&#xff0c;提供了许多高级功能&#xff0c;如连接池、请求压缩和缓存等。 依赖 要使用OkHttp&#xff0c;需要在项目的构建文件中添加以下依赖&#xff1…...

认识网线上的各种参数标号

最近工作需要&#xff0c;接触了很多不同类型的网线&#xff0c;为了能够区分不同型号的网线&#xff0c;特意做一篇笔记用来学习&#xff0c;如有记录有误之处&#xff0c;欢迎大家指正~初步认识网线 常用的网络电缆有三种&#xff1a;双绞线、同轴电缆和光纤电缆&#xff08…...

软件测开记录(一)

知识点汇总 14&#xff1a;00面试&#xff0c;14&#xff1a;06就出来了&#xff0c;问的问题有点变态。。。 python自动化测试学习路线&#xff08;从入门到精通&#xff09; 单元知识点 测试常用工具 常用的客户端和服务器端开发和测试工具 服务器与客户端常用测试工具与…...

基数排序之代码解析

基数排序是生活中咱们写程序用的比较少的排序&#xff0c;但是这个排序比较巧妙&#xff0c;今天就给大家讲一讲&#xff0c;原理都在代码里面&#xff0c;下面会给一些解释。 import java.util.Arrays;public class Code04_RadixSort {// only for no-negative valuepublic s…...

使用C语言EasyX 创建动态爱心背景

简介 在计算机图形学的世界中&#xff0c;有很多方法可以使程序的界面更加吸引人。在本篇博客中&#xff0c;我将向大家介绍如何使用 EasyX 图形库在 C 中创建一个动态的爱心背景。这不仅是一个简单的动画效果&#xff0c;它还包括背景的星星、旋转的心形以及一个美观的背景渐…...

springboot redisTemplate.opsForValue().setIfAbsent返回null原理

一、版本 springboot版本&#xff1a;spring-boot-starter-data-redis 2.1.6 redisson版本&#xff1a;redisson-spring-boot-starter 3.11.5 二、场景 Boolean res redisTemplate.opsForValue().setIfAbsent("key","value");以上代码同一时间多次执行…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合

强化学习&#xff08;Reinforcement Learning, RL&#xff09;是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程&#xff0c;然后使用强化学习的Actor-Critic机制&#xff08;中文译作“知行互动”机制&#xff09;&#xff0c;逐步迭代求解…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

回溯算法学习

一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

jmeter聚合报告中参数详解

sample、average、min、max、90%line、95%line,99%line、Error错误率、吞吐量Thoughput、KB/sec每秒传输的数据量 sample&#xff08;样本数&#xff09; 表示测试中发送的请求数量&#xff0c;即测试执行了多少次请求。 单位&#xff0c;以个或者次数表示。 示例&#xff1a;…...