【DFS】春来我不先开口,哪个虬儿敢做声 - 3.快速幂

【DFS】春来我不先开口,哪个虬儿敢做声 - 3.快速幂
在这里插入图片描述
本篇博客给大家带来的是DFS深度优先遍历的解法技巧,在后面的文章中题目会涉及到回溯和剪枝,遇到了一并讲清楚.
🐎文章专栏: DFS
🚀若有问题 评论区见
❤ 欢迎大家点赞 评论 收藏 分享
如果你不知道分享给谁,那就分享给薯条.
你们的支持是我不断创作的动力 .

王子,公主请阅🚀

要开心

要快乐

顺便进步

1. 快速幂

题目链接:50. Pow(x, n)

题目内容:

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,x^n )。

示例 1:

输入:x = 2.00000, n = 10
输出:1024.00000
示例 2:

输入:x = 2.10000, n = 3
输出:9.26100

示例 3:

输入:x = 2.00000, n = -2
输出:0.25000

在这里插入图片描述
解法一: 暴力枚举
循环遍历n, x在循环中自乘, 如果n太大,则会超出时间限制.
解法二: 递归实现快速幂

举两个例子讲清楚快速幂的原理
假设x = 3;
1. 当n为偶数时:

在这里插入图片描述


当n为偶数时, 3^n = 3 ^n/2 * 3^n/2;
2. 当n为奇数时:
当n为奇数时3^n = 3 ^n/2 * 3^n/2 * 3

综上所述, 不难得出递归出口即为,当n = 0时,返回1即可.

代码实现
classSolution{publicdoublemyPow(double x,int n){return n <0?1.0/pow(x,-n):pow(x,n);}publicdoublepow(double x,int n){if(n ==0)return1.0;double tmp =pow(x,n/2);return n %2==0? tmp*tmp : tmp*tmp*x;}}

本篇博客到这里就结束啦, 感谢观看 ❤❤❤
🐎期待与你的下一次相遇😊😊😊

Read more

Java SpringBoot+Vue3+MyBatis 宠物领养系统系统源码|前后端分离+MySQL数据库

Java SpringBoot+Vue3+MyBatis 宠物领养系统系统源码|前后端分离+MySQL数据库

摘要 随着社会经济的快速发展和人们生活水平的提高,宠物已成为许多家庭的重要成员。然而,流浪动物问题日益严重,传统的线下领养模式存在信息不对称、流程繁琐等问题。为解决这一问题,开发一套高效、便捷的宠物领养系统具有重要意义。该系统通过互联网技术整合宠物信息、领养申请和用户管理功能,为领养者和救助机构搭建沟通桥梁,提升领养效率。关键词:宠物领养、流浪动物、互联网技术、信息整合、领养效率。 本系统基于Java SpringBoot框架搭建后端服务,采用Vue3实现前端交互,结合MyBatis完成数据持久化操作,MySQL数据库存储系统数据。系统功能涵盖用户注册登录、宠物信息管理、领养申请处理、数据统计分析等模块。前后端分离的设计模式提升了系统的可维护性和扩展性,RESTful API接口规范确保数据传输的高效性。系统通过权限控制和数据加密保障用户信息安全,同时支持多条件查询和分页展示优化用户体验。关键词:SpringBoot、Vue3、MyBatis、MySQL、前后端分离、权限控制。 数据表设计 用户信息数据表 用户信息数据表存储系统注册用户的个人资料,注册时间通过函数自动生成,用

By Ne0inhk
JUC 核心前置:Java 内存模型与多线程核心八股

JUC 核心前置:Java 内存模型与多线程核心八股

1. 介绍Java的内存模型(JMM) JMM是多线程并发问题的一套规则,也就是在规定是多线程的环境下,线程怎们访问变量才会步出错这里要处理可见性、原子性、有序性 可见性:若线程A从CPU共享变量里拿到变量到自己的工作内存里修改变量后还没来得及把变量放回共享变量里,那么线程B在此时就看不到变量的更新,此时就要用volatitle关键字来约束、让整个流程结束后才能让其他线程访问这个变量 原子性:若线程AB同时执行i++这个操作,首先i++是先读i再加1再放回原本变量,当线程A已经把i=10更新为i =11了,可能线程B才把i更新为11这样结果就会出错,所以就需要synchronized 或lock锁来让只有一个线程结束后另一个线程才能操作,且中间不会被打断,提供了互斥访问 有序性:就是可能代码执行顺序有问题,在单线程时,我们常常初始化一个对象A,再把这个对象的引用给变量a。可在多线程时,为了编译速度,编译器或者cpu可能会改变你的代码执行顺序,可能会优先给变量a赋值A的引用,但A还没初始化好时,线程B就访问a,由于A还没有初始化完全就会报错,synchronized或者lock锁

By Ne0inhk
【Java ArrayList】从入门到精通:从概念,使用到扩容机制,一篇带你掌握Java动态数组核心

【Java ArrayList】从入门到精通:从概念,使用到扩容机制,一篇带你掌握Java动态数组核心

🎁个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 🔍系列专栏:Java.数据结构 【前言】 ArrayList 是 Java 集合框架(Java Collections Framework)中最常用的动态数组实现,它提供了灵活的容量管理、便捷的增删改查操作,广泛应用于日常开发中。本文将深入剖析 ArrayList 的底层结构、核心方法源码、性能特点及最佳实践,帮助读者彻底掌握这一基础数据结构。 文章目录: * 一、ArrayList的概念 * 二、ArrayList的使用 * 1.构造ArrayList * 1.1 无参构造方法 * 1. 2 带有初始容量的构造方法 * 1.3 用其他集合类构造ArrayList * 2.操作方法 * 2.1 boolean add(

By Ne0inhk
最近对javashop做了压力测试:百万级并发下完全不是问题

最近对javashop做了压力测试:百万级并发下完全不是问题

目录 * 最近对javashop做了压力测试:百万级并发下完全不是问题 * 一、弹性架构设计:线性扩容的工程艺术 * 1. 水平扩展的完美表现 * 2. 资源效率的精准把控 * 二、关键性能指标:百万级并发的技术突破 * 1. 长时间稳定性测试(30 分钟高压下的 “零失误”) * 2. 数据一致性保障 * 3. 大数据量处理能力 * 三、全链路技术优化方案 * 1. 智能监控体系 * 2. 核心场景优化效果 * 3. 高性价比推荐配置 * 四、从技术优势到商业价值 * 结语:重新定义电商技术标准 最近对javashop做了压力测试:百万级并发下完全不是问题 在电商行业竞争白热化的今天,系统性能直接决定了用户体验和企业商业成功。本文基于《Javashop 压测报告》,从技术架构、核心指标、业务价值三大维度深度解析其性能优势,并针对原文进行优化,为追求极致性能的企业提供更具价值的选型参考。 一、弹性架构设计:线性扩容的工程艺术 1.

By Ne0inhk