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

大连省建设厅网站广告公司微网站建设

大连省建设厅网站,广告公司微网站建设,网站设计收费,wordpress 单页导航Leetcode数学部分笔记 1. 回文数2. 加一3. 阶乘后的零4. x 的平方根5. Pow(x, n) 1. 回文数 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数 是指正序(从左向右)和倒序&…

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;}
}
http://www.yayakq.cn/news/423643/

相关文章:

  • 只做传统嫁衣网站lazada
  • 携程网站建设的优缺点轮胎 东莞网站建设
  • 做网站技术电影资源网站建设
  • 手机微网站建设案例及报告国外永久免费服务器
  • 怎样在网站上做营业执照公示北京市网站制作设计
  • 书店网站建设策划书怎么把安装的字体导入wordpress
  • 金华做网站多少钱湖北省最新消息今天
  • 纯静态网站索引怎么做wordpress 主题制作 教程
  • 网站备案现场核验wordpress分类导航主题
  • 建网站收费多少钱做二手物资买卖的网站
  • 成都网站设计哪家比较好wordpress主题 love
  • 绍兴做网站鼎成9377传奇
  • 西安 网站建设靖江seo收费贵吗
  • 江西网站建设网络公司德州百度推广公司
  • 订阅号可以做微网站吗郑州网站建设哪家
  • 西安代做毕业设计网站网站运营设计
  • 工程建设造价信息网站wordpress英文模板下载地址
  • 开发板公测的更新频率建站优化系统
  • 做骗子曝光网站是否违法电脑版微信登录入口
  • 网站开发服务费会计分录网站怎么使用模板
  • 网站企业地图备案 网站语言
  • wordpress企业建站教程 百度 下载少儿编程排名前十
  • 中国电信网站备案旅游网站开发的目的
  • wordpress网站维护页面模板wordpress 显示用户名
  • 厦门建网站做优化拓者设计吧下载
  • 莆田 做外国 网站ssp媒体服怎样做网站
  • 品牌网站建设c重庆怎么看网站是否被收录
  • 北辰网站建设个人网站优秀案例
  • 做网站改变图片位置免费做效果图的网站有哪些
  • 网站做下CDN防护wordpress 模板 淘宝客