166分数到小数

给定两个整数,分别表示分数的分子 numerator 和分母 denominator,以字符串形式返回小数。如果小数部分为循环小数,则将循环的部分括在括号内。

输入: numerator = 2, denominator = 3
输出: "0.(6)"

思路:

  • 分母、分子为0的情况
  • 新建StringBuilder
  • 结果是否为负数,是则加上负号
  • 分子分母取绝对值
  • 处理整数部分,并判断是否可以整除,是的话返回结果。注意转为long,且用long rem = (num % den) * ,10;来判断是否可以整除,之后会不断用到。
  • 不能整除,那么加上小数点,新建map,用来存储余数及当前结果的长度
  • 只要余数不为0,那么进入循环。
    • 检查map中,当前余数是否已经出现过,如果是,取值,substring处理循环部分
    • 更新map、res和rem
  • 返回res.toString()
// 分母、分子为0的情况
if (denominator == 0) return "";
if (numerator == 0) return "0"; StringBuilder res = new StringBuilder();
// 结果是否为负数
if ((numerator < 0) ^ (denominator < 0)) res.append("-"); // 取绝对值,方便处理
long num = numerator, den = denominator;
num = Math.abs(num);
den = Math.abs(den); // 整数部分
res.append(num / den);
long rem = (num % den) * 10;
if (rem == 0) return res.toString(); // 负数部分
res.append(".");
HashMap<Long, Integer> map = new HashMap<Long, Integer>(); while (rem != 0) {
if (map.containsKey(rem)) {
Integer loc = map.get(rem);
String p1 = res.substring(0, loc);
String p2 = res.substring(loc);
res = new StringBuilder(p1 + "(" + p2 + ")");
return res.toString();
}
map.put(rem, res.length());
res.append(rem / den);
rem = (rem % den) * 10;
}
return res.toString();

169/229求众数

169次数大于一半才是众数

思路:

  • 设置maj和cnt变量
  • 遍历
    • 如果cnt==0,那么maj更新为当前num,cnt++,即初始化为1,否则如果重复,cnt++,不重复cnt--
int maj = 0, cnt = 0;

// 遍历
for (int num : nums){
if (num == maj){
cnt++;
}
else if (cnt == 0) {
maj = num;
cnt++;
}
else cnt--;
}

229超过n/3属于众数

思路

  • 和上面类似,但设置两个候选众数。而且要对这两个候选变量进行验证,即是否真的超过n/3
int m = 0, n = 0, cm = 0, cn = 0;
for (auto &a : nums) {
if (a == m) ++cm;
else if (a ==n) ++cn;
else if (cm == 0) m = a, cm = 1;
else if (cn == 0) n = a, cn = 1;
else --cm, --cn;
}
cm = cn = 0;
for (auto &a : nums) {
if (a == m) ++cm;
else if (a == n) ++cn;
}
if (cm > nums.size() / 3) res.push_back(m);
if (cn > nums.size() / 3) res.push_back(n);
return res;

238除自身以外数组的乘积

输入: [1,2,3,4]
输出: [24,12,8,6]

思路:题目不能用除法

  • 新建数组记录每个数字左边的累积,然后乘上右边的累乘。右边的累乘用一个变量表示,不断作用于存储了左边累积的数组
  • 注意边界问题:左边界初始化为1,右边界记录的是[0, n-2]的累积,所以不需要nums[n-1]

注意边界初始化record[0] = 1和right = 1,再根据例子列出左累乘[1,1,2,6]就可已解出

int n = nums.length;
int[] record = new int[n];
record[0] = 1;
for (int i = 1; i < n; i++){
record[i] = record[i-1] * nums[i-1];
} int right = 1;
for (int i = n - 1; i >=0; i--){
record[i] *= right;
right *= nums[i];
} return record;

69Sqrt(x) 求平方根

if (x == 0) return 0;
double res = (double) x;
double last = 0.0;
while (res != last) {
last = res;
res = res - x / (2 * res); // 求解看下面
}
return (int) res;

f(x) = x2 - n

(f(x) - f(xi))/ (x - xi) = f'(xi)

求出xi+1 = g(x)即可,x表示上面res,f(x)表示上面的参数x

231Power of Two

n > 0 && (n & (n-1)) == 0

leetcode数学相关的更多相关文章

  1. codeforces 687B - Remainders Game 数学相关(互质中国剩余定理)

    题意:给你x%ci=bi(x未知),是否能确定x%k的值(k已知) ——数学相关知识: 首先:我们知道一些事情,对于k,假设有ci%k==0,那么一定能确定x%k的值,比如k=5和ci=20,知道x% ...

  2. 【3D研发笔记】之【数学相关】(一):坐标系

    现在开始学习3D基础相关的知识,本系列的数学相关笔记是基于阅读书籍<3D数学基础:图形与游戏开发>而来,实现代码使用AS3,项目地址是:https://github.com/hammerc ...

  3. [自用]多项式类数学相关(定理&证明&板子)

    写在前面 由于上一篇总结的版面限制,特开此文来记录 \(OI\) 中多项式类数学相关的问题. 该文启发于Miskcoo的博客,甚至一些地方直接引用,在此特别说明:若文章中出现错误,烦请告知. 感谢你的 ...

  4. [总结]数论和组合计数类数学相关(定理&证明&板子)

    0 写在前面 0.0 前言 由于我太菜了,导致一些东西一学就忘,特开此文来记录下最让我头痛的数学相关问题. 一些引用的文字都注释了原文链接,若侵犯了您的权益,敬请告知:若文章中出现错误,也烦请告知. ...

  5. [总结]多项式类数学相关(定理&证明&板子)

    目录 写在前面 前置技能 多项式相关 多项式的系数表示 多项式的点值表示 复数相关 复数的意义 复数的基本运算 单位根 代码相关 多项式乘法 快速傅里叶变换 DFT IDFT 算法实现 递归实现 迭代 ...

  6. [总结]其他杂项数学相关(定理&证明&板子)

    目录 写在前面 一类反演问题 莫比乌斯反演 快速莫比乌斯变换(反演)与子集卷积 莫比乌斯变换(反演) 子集卷积 二项式反演 内容 证明 应用举例 另一形式 斯特林反演 第一类斯特林数 第二类斯特林数 ...

  7. Python学习笔记17:标准库之数学相关(math包,random包)

    前面几节看得真心累.如今先来点简单easy理解的内容. 一 math包 math包主要处理数学相关的运算. 常数 math.e   # 自然常数e math.pi  # 圆周率pi 运算函数 math ...

  8. Java.util.Math类--数学相关的工具类

    Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...

  9. leetcode tree相关题目总结

    leetcode tree相关题目小结 所使用的方法不外乎递归,DFS,BFS. 1. 题100 Same Tree Given two binary trees, write a function ...

随机推荐

  1. git生成ssh key及本地解决多个ssh key的问题

    git生成ssh key及本地解决多个ssh key的问题 ssh是一种网络协议,用于计算机之间的加密登录.ssh原理及应用可参考: SSH原理与运用(一):远程登录 生成ssh key步骤 这里以配 ...

  2. vue编辑回显问题

    真是疯了,vue怪毛病真多 就下面这玩意儿,多选组合框,新增的时候好用的不行不行的,到了编辑的时候,要回显数据,怪毛病一堆一堆的 首先,回显的时候要传一个数组,但是这个数组里的元素得是字符串类型的,如 ...

  3. pythonGUI编程——Qt库(1)

    1.简单示例实现一个小窗口.       PyQt5是一种高级的语言,下面只有几行代码就能显示一个小窗口.底层已经实现了窗口的基本功能. #!/usr/bin/python#coding:utf-8# ...

  4. UGUI世界坐标转换为UI本地坐标(游戏Hud的实现)

    实现世界坐标的原理是: 世界坐标和UGUI的坐标分属两个坐标系,他们之间是无法进行转换的,需要通过屏幕坐标系来进行转换(因为屏幕坐标是固定的),即先将游戏场景中的世界坐标通过游戏场景Camera转化为 ...

  5. iptables详解(4):iptables匹配条件总结之一

    所属分类:IPtables  Linux基础 在本博客中,从理论到实践,系统的介绍了iptables,如果你想要从头开始了解iptables,可以查看iptables文章列表,直达链接如下 iptab ...

  6. pandas写入多组数据到excel不同的sheet

    今天朋友问了我个需求,就是如何将多个分析后的结果,也就是多个DataFrame,写入同一个excel工作簿中呢? 之前我只写过放在一个sheet中,但是怎么放在多个sheet中呢?下面我在本地wind ...

  7. select 如何将文本居中

    开始测试了几种方式但是结果都是失败的,最后测试一种方式终于成功了,所以做下笔记: select{ width: 3.2rem; height: 1.2rem; border-radius: 0.6re ...

  8. VS单元测试"未能加载文件或程序集,或它的某一个依赖项"

    Autofac.Core.DependencyResolutionException : An error occurred during the activation of a particular ...

  9. PAT 1105 Spiral Matrix

    This time your job is to fill a sequence of N positive integers into a spiral matrix in non-increasi ...

  10. Linux学习总结(3)——Linux实用工具

    1. Windows下同步Linux文件(Linux安装Samba和配置) 场景需求: 安装了Ubuntu在虚拟机上,但是代码编辑或者其它更多的操作的时候,还是习惯在windows下进行.如果wind ...