算法学习位运算:快速幂

算法学习位运算:快速幂

<h2 id="异或运算的笔记技巧:">异或运算的笔记技巧:</h2> <p><strong>1.如果 <code>a ^ b = c</code> 成立,那么<code>a ^ c = b</code> 与 <code>b ^ c = a</code> 均成立</strong></p> <p>如果有三个数,满足其中两个数的异或值等于另一个值,那么这三个数的顺序可以任意调换。</p> <p><strong>2.把nums存入hashMap,如果随便定义一个a,并把a与hashMap里面的b操作。a ^ b = c , 如果c在hashMap里也有,那么hashMap里面,可以挑两个数来^出a出来,随便定义的a就是可证实的a了。</strong></p> <p>参考题目:</p> <p>幂运算:</p> <p>x^n,</p> <p>暴力法:自己乘自己,乘n遍</p> <p>快速幂的运算,x^n = x^0.5n * x^0.5n 所以,求出x^0.5n,再对自己运算一次,就能得出答案,节省了很多的运算量。</p> <p>算法的核心,就是x^n 当n为偶数的时候,执行上面写的转换,当n为奇数的时候,就可以执行x^n = x^(n - 1)  * x;,就可以继续递归执行(n-1的偶数)的运算了</p> <p>注意:n是负数的时候,让x = 1/x,然后n就可以变成正数进行运算</p> <p>递归算法:</p> <pre><code>var myPow = function (x, n) { // console.log("遍历到了",n);
if (n == 0) { return 1; } if (n == 1) { return x; } if (n < 0) { x = 1 / x; n = -n; } if ((n % 2) == 0) { let A = myPow(x, n / 2); return A * A; } else { let A = myPow(x, n - 1); return A * x; } }</code></pre> <p>迭代算法:</p> <p>主要就是根据n,除以二一次,自己就乘以自己一次,假如碰到了奇数,执行x^n = x^(n-1) * x,再执行x^n = x^0.5n * x^0.5n</p> <pre><code>var myPow = function (x, n) { let N = n; if (N < 0) { x = 1 / x; N = -N; } let ans = 1; let current_product = x; for (let i = N; i; i /= 2) { if ((i % 2) == 1) { ans = ans * current_product; } current_product = current_product * current_product; } return ans; }</code></pre>

Read more

【spring02】Spring 管理 Bean-IOC,基于 XML 配置 bean

【spring02】Spring 管理 Bean-IOC,基于 XML 配置 bean

文章目录🌍一. bean 创建顺序🌍二. bean 对象的单例和多例❄️1. 机制❄️2. 使用细节🌍三. bean 的生命周期🌍四. 配置 bean 的后置处理器 【这个比较难】🌍五. 通过属性文件给 bean 注入值🌍六. 基于 XML 的 bean 的自动装配🌍七. spring el 表达式[知道即可] 🙋‍♂️ 作者:@whisperrr.🙋‍♂️ 👀 专栏:spring👀 💥 标题:【spring01】Spring 管理 Bean-IOC,基于 XML 配置 bean💥 ❣️ 寄语:比较是偷走幸福的小偷❣️ 🌍一.

By Ne0inhk
MySQL 数据库核心操作全解析:从创建到备份与连接管理

MySQL 数据库核心操作全解析:从创建到备份与连接管理

前言:在数据库管理中,MySQL 作为开源关系型数据库的标杆,其基础操作是所有开发者和运维人员的必备技能。本文将从数据库的创建、编码配置、查看修改,到备份恢复与连接监控,逐步拆解核心操作,结合实操命令与原理讲解,帮你彻底掌握 MySQL 基础管理逻辑。 一、数据库创建:基础语法与本质解析 创建数据库是 MySQL 操作的起点,掌握其语法规则与底层原理,能避免后续使用中的诸多问题。 1.1 核心创建语法 MySQL 创建数据库的标准语法如下,其中 [] 内的关键字为可选参数,用于提升操作安全性: CREATE DATABASE [IF NOT EXISTS] database_name; * IF NOT EXISTS:关键安全参数。若数据库已存在,不加此参数会直接报错;添加后会将报错转为警告,避免程序执行中断。 * 语法大小写特性:MySQL 语法不区分大小写,但行业惯例会将关键字(如CREATE

By Ne0inhk
基于Rust实现爬取 GitHub Trending 热门仓库

基于Rust实现爬取 GitHub Trending 热门仓库

基于Rust实现爬取 GitHub Trending 热门仓库 这个实战项目将使用 Rust 实现一个爬虫,目标是爬取 GitHub Trending 页面的热门 Rust 仓库信息(仓库名、描述、星标数、作者等),并将结果输出为 JSON 文件。本次更新基于优化后的代码,重点提升了错误处理容错性和 CSS 选择器稳定性。 技术栈 * HTTP 请求:reqwest( Rust 最流行的 HTTP 客户端,支持异步) * HTML 解析:scraper(基于 selectors 库,支持 CSS 选择器,轻量高效) * JSON 序列化:serde + serde_json( Rust 标准的序列化

By Ne0inhk
【MySQL】从零开始学习MySQL:基础与安装指南

【MySQL】从零开始学习MySQL:基础与安装指南

MySQL作为世界上最受欢迎的关系型数据库之一,在电商、SNS、论坛等场景中应用广泛。作为学计算机的,数据库的水平是衡量一个程序员水平的重要指标需要掌握MySQL。本文 将以Linux下的MySQL,从基础概念出发,完成MySQL安装。 一、MySQL基础认知:为什么选择它? 1.1什么是数据库? 简单来说,数据库是高效管理数据的工具。相比文件存储,它解决了四大问题: * 安全性:避免文件被随意修改或删除 * 易管理:支持快速查询、筛选和统计 * 可扩展:轻松应对海量数据存储 * 易集成:便于在程序中调用和操作 数据库的存储介质包括磁盘(持久化)和内存(临时缓存) 1.2主流数据库对比 选择数据库时,需根据项目规模和需求判断: * SQL Sever:微软产品,适合.NET程序员的最爱,中大型项目 * Oracle:甲骨文旗下,适合复杂业务逻辑的大型项目,但并发性能不如Mysql; * MySQL:开源免费,并发性能优秀,适合电商、

By Ne0inhk