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

Leetcode数学部分笔记

Leetcode数学部分笔记

  • 1. 回文数
  • 2. 加一
  • 3. 阶乘后的零
  • 4. x 的平方根
  • 5. Pow(x, n)

1. 回文数

给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数
是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
例如,121 是回文,而 123 不是。
在这里插入图片描述

解题思路:
把回文数转为String类型,然后让StringBuffer存储后再逆置,看看和原本的String相同不。

class Solution {public boolean isPalindrome(int x) {String str1 = String.valueOf(x);StringBuffer buffer = new StringBuffer();buffer.append(str1);return str1.equals(buffer.reverse().toString());   }
}

2. 加一

给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。
最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外,这个整数不会以零开头。
在这里插入图片描述

**解题思路:**逆序遍历这个数组,让最后一位加一,再让遍历的这一位和10取余,如果结果不为0,则说明没有进位,直接返回。如果遍历结果为0,则说明有进位,让倒数第二位继续加1,在判断是否有进位。
遍历一遍以后,如果都有进位,则说明需要扩大一个空间,让第一位为1。

在这里插入代码片
class Solution {public int[] plusOne(int[] digits) {int n = digits.length;for(int i = n-1;i >= 0; i--){digits[i] ++;digits[i] = digits[i] % 10;if(digits[i]!=0) return digits; }int[] digit = new int[n+1];digit[0] = 1;return digit;}
}

3. 阶乘后的零

给定一个整数 n ,返回 n! 结果中尾随零的数量。

提示 n! = n * (n - 1) * (n - 2) * … * 3 * 2 * 1
在这里插入图片描述
解题思路:用大白话讲一下找规律的思路:

我们先以n=7举个例子,看一下7!末尾有几个0。

我们把7!展开来看下:

7!=1∗2∗3∗4∗5∗6∗7
我们知道,只有2∗5才可以得到一个0,那我们只需要看7!可以分解为多少个2∗5就可以。

2出现的频率肯定是高于5的,因为:

每隔 2 个数就会包含因子2,比如2,4,6,…,
而每个 5 个数才会出现一个包含因子5的数,比如5,10,15,…
那我们的题目就可以转换为,n!最多可以分解出多少个因子5。

对于n!,5 的因子一定是每隔 5 个数出现一次,也就是下边的样子。

n!=1∗2∗3∗4∗(1∗5)∗…∗(2∗5)∗…∗(3∗5)∗…∗n
但我们还会发现,每隔 25(5*5) 个数字,出现的是 2 个 5,如下:

…∗(1∗5)∗…∗(1∗5∗5)∗…∗(2∗5∗5)∗…∗(3∗5∗5)∗…∗n
比如1∗5∗5,2∗5∗5,里面包含了 2 个 5。

同理,每隔 125(555)个数字,出现的是 3 个 5,如下:

…∗(1∗5)∗…∗(1∗5∗5∗5)∗…∗(2∗5∗5∗5)∗…∗(3∗5∗5∗5)∗…∗n
那么,我们要计算n!中一共有多少个因子5的话,计算方法方式就应该是:

每隔5个数出现一次的因子5的次数+每隔25个数出现一次的因子5的次数+…
也就是:

n/5+n/(5∗5)+n/(5∗5∗5)+…

class Solution {public int trailingZeroes(int n) {int count = 0;// 每次循环都将 n 除以 5,统计有多少个 5 的因数while (n >= 5) {n /= 5; // 每五个数中会引入一个 5count += n; // 统计所有包含 5 的数}return count; // 返回尾随零的数量}
}

4. x 的平方根

给你一个非负整数 x ,计算并返回 x 的 算术平方根 。

由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。

注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。
在这里插入图片描述
解题思路:二分查找,如果小于等于了,就存一个最大的mid,如果大于等于了,就让r = mid - 1

class Solution {public int mySqrt(int x) {int l = 0, r = x, ans = -1;while (l <= r) {int mid = l + (r - l) / 2;if ((long) mid * mid <= x) {ans = mid;l = mid + 1;} else {r = mid - 1;}}return ans;}
}

5. Pow(x, n)

实现 pow(x, n) ,即计算 x 的整数 n 次幂函数(即,xn )。
在这里插入图片描述

把指数都变成正的,如果是负的则进行除法操作。
对指数N进行拆分,如果和2取余等于1,则说明需要称一次,其他时候乘两次

class Solution {public double myPow(double x, int n) {long N = n;return N >= 0 ? quickMul(x, N) : 1.0 / quickMul(x, -N);}public double quickMul(double x, long N) {double ans = 1.0;// 贡献的初始值为 xdouble x_contribute = x;// 在对 N 进行二进制拆分的同时计算答案while (N > 0) {if (N % 2 == 1) {// 如果 N 二进制表示的最低位为 1,那么需要计入贡献ans *= x_contribute;}// 将贡献不断地平方x_contribute *= x_contribute;// 舍弃 N 二进制表示的最低位,这样我们每次只要判断最低位即可N /= 2;}return ans;}
}

相关文章:

Leetcode数学部分笔记

Leetcode数学部分笔记 1. 回文数2. 加一3. 阶乘后的零4. x 的平方根5. Pow(x, n) 1. 回文数 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数 是指正序&#xff08;从左向右&#xff09;和倒序&…...

微信小程序web-view 嵌套h5界面 实现文件预览效果

实现方法&#xff1a;(这里我是在小程序里面单独加了一个页面用来下载预览文件) 安装 使用方法请参考文档 npm 安装 npm install weixin-js-sdk import wx from weixin-js-sdk预览 h5界面代码 <u-button click"onclick" type"primary" :loading"…...

【汽车】-- 燃油发动机3缸和4缸

3缸和4缸燃油发动机是小轿车常见的发动机配置。以下从结构特点、性能、经济性等方面对两者进行对比&#xff0c;并分析优缺点及使用注意事项&#xff1a; 1. 结构与运行原理 3缸发动机 特点&#xff1a;少一个气缸&#xff0c;内部零部件更少&#xff0c;整体结构更紧凑。优点…...

轻量级的 HTML 模板引擎

Mustache 简介&#xff1a;Mustache 是一个非常简单的逻辑少的模板引擎&#xff0c;支持 HTML 文件中的占位符替换。它不会执行复杂的逻辑&#xff0c;只支持简单的变量替换。 安装&#xff1a; npm install mustache示例&#xff1a; const Mustache require(mustache);c…...

Mysql | 尚硅谷 | 第02章_MySQL环境搭建

Mysql笔记&#xff1a;第02章_MySQL环境搭建 说明&#xff1a;本内容整理自尚硅谷B站MySQL视频>>尚硅谷B站MySQL视频 文章目录 Mysql笔记&#xff1a;第02章_MySQL环境搭建第02章_MySQL环境搭建 1. MySQL的卸载步骤1&#xff1a;停止MySQL服务步骤2&#xff1a;[软件](h…...

Maven学习(传统Jar包管理、Maven依赖管理(导入坐标)、快速下载指定jar包)

目录 一、传统Jar包管理。 &#xff08;1&#xff09;基本介绍。 &#xff08;2&#xff09;传统的Jar包导入方法。 1、手动寻找Jar包。并放置到指定目录下。 2、使用IDEA的库管理功能。 3、配置环境变量。 &#xff08;3&#xff09;传统的Jar包管理缺点。 二、Maven。 &#…...

CTF: 在本地虚拟机内部署CTF题目docker

step 1 安装基本依赖 sudo apt-get update sudo apt-get install -y \ca-certificates \curl \gnupg \lsb-releasestep 2 安装docker sudo apt-get remove docker docker.io containerd runc sudo apt-get update sudo apt-get install \apt-transport-https \ca-certificate…...

视频推拉流EasyDSS无人机直播技术巡查焚烧、烟火情况

焚烧作为一种常见的废弃物处理方式&#xff0c;往往会对环境造成严重污染。因此&#xff0c;减少焚烧、推广绿色能源和循环经济成为重要措施。通过加强森林防灭火队伍能力建设与长效机制建立&#xff0c;各地努力减少因焚烧引发的森林火灾&#xff0c;保护生态环境。 巡察烟火…...

SpringBoot【十一】mybatis-plus实现多数据源配置,开箱即用!

一、前言&#x1f525; 环境说明&#xff1a;Windows10 Idea2021.3.2 Jdk1.8 SpringBoot 2.3.1.RELEASE 正常情况下我们在开发系统的时候都是使用一个数据源&#xff0c;但是由于有些项目同步数据的时候不想造成数据库io消耗压力过大&#xff0c;便会一个项目对应多个数据源…...

【嵌入式linux基础】关于linux文件多次的open

在 Linux 中&#xff0c;设备文件可以被多次打开&#xff08;open()&#xff09;&#xff0c;但这取决于具体的设备类型和其驱动程序的实现。以下是关于设备文件多次打开的一些关键点&#xff1a; 普通字符设备&#xff1a; 对于大多数字符设备&#xff0c;如串口、TTY 设备等&…...

TPAMI 2023:When Object Detection Meets Knowledge Distillation: A Survey

摘要 目标检测&#xff08;Object Detection&#xff0c;OD&#xff09;是计算机视觉中的一项关键任务&#xff0c;多年来涌现出了众多算法和模型。尽管当前 OD 模型的性能有所提升&#xff0c;但它们也变得更加复杂&#xff0c;由于参数规模庞大&#xff0c;在工业应用中并不…...

2024前端面试题(持续更新)

目录 一、js的数据类型有哪些&#xff1f; 二、什么是symbol&#xff1f; 三、什么是浅拷贝什么是深拷贝&#xff1f; 四、vue2的生命周期&#xff1f; 五、vue2中父子组件的生命周期调用顺序 六、vue3的生命周期 七、vue3对比vue2的变化 八、组合式API中的ref和reactiv…...

apache转nginx访问变成下载解决方法

在配置文件 nginx.conf中存在 第一行&#xff1a; include mine.types 对应了文件的mime类型。 第二行&#xff1a; 默认的是octet-stream, 意思是如果一个文件的mime类型不存在就会使用默认的类型。 通常是这个导致了文件的下载。 第一种方案&#xff1a;&#xff08;推荐&a…...

【iOS】OC高级编程 iOS多线程与内存管理阅读笔记——自动引用计数(三)

目录 ARC规则 概要 所有权修饰符 __strong修饰符 __weak修饰符 __unsafe_unretained修饰符 __autoreleasing修饰符 ARC规则 概要 “引用计数式内存管理”的本质部分在ARC中并没有改变&#xff0c;ARC只是自动地帮助我们处理“引用计数”的相关部分。 在编译单位上可以…...

Oracle数据库使用dblink是时出现 ORA-12170:TNS:连接超时

原因&#xff1a; 我遇到这种情况是因为dblink那端的数据库被我重新导了一下dmp&#xff0c;然后本地这边查询就报错了。 解决办法&#xff1a; 把已有的dblink删掉或者说是换个名字&#xff0c;然后按照原来的再新建一个同名的dblink就解决了。...

OpenHarmony系统中实现Android虚拟化、模拟器相关的功能,包括桌面显示,详细解决方案

在 OpenHarmony 系统中实现 Android 虚拟化 和 模拟器功能&#xff08;面显包括桌示&#xff09;是一个复杂的任务&#xff0c;涉及多个关键技术栈的集成和深度定制。我们可以通过多种方式来实现 Android 系统的虚拟化和模拟器功能&#xff0c;类似于在普通操作系统中运行虚拟机…...

决策曲线分析(DCA)中平均净阈值用于评价模型算法(R自定义函数)

决策曲线分析&#xff08;DCA&#xff09;中平均净阈值用于评价模型算法 DCA分析虽然不强调用来评价模型算法或者变量组合的优劣&#xff0c;但是实际应用过程中感觉DCA曲线的走势和模型的效能具有良好的一致性&#xff0c;其实这种一致性也可以找到内在的联系&#xff0c;比如…...

《经验分享 · 软考系统分析师》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…...

记录一下 js encodeURI和encodeURIComponent URL转码问题

escape&#xff1a;由于它已经被废弃&#xff0c;不建议在任何新的代码中使用。encodeURI&#xff1a;当你需要对整个URI进行编码时使用&#xff0c;例如在将整个URL作为参数传递时。encodeURIComponent&#xff1a;当你需要编码URI中的某一部分&#xff0c;尤其是查询字符串参…...

【C语言】二维前缀和/求子矩阵之和

相信你是最棒哒&#xff01;&#xff01;&#xff01; 目录 一、题目描述 正确代码 二、题目描述 题目代码 总结 一、题目描述 输入一个 &#x1d45b; 行 &#x1d45a; 列的整数矩阵&#xff0c;再输入 &#x1d45e;个询问&#xff0c;每个询问包含四个整数 &#x1d465;1…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法&#xff1a;netstat [选项] 功能&#xff1a;查看网络状态 常用选项&#xff1a; n 拒绝显示别名&#…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

JDK 17 新特性

#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持&#xff0c;不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的&#xff…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

android13 app的触摸问题定位分析流程

一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...