update sequence

This commit is contained in:
ranwenjie
2021-09-13 11:36:49 +08:00
parent adad6993cc
commit d1ad2f3dbb
10 changed files with 110 additions and 25 deletions
@@ -7,6 +7,8 @@
* 随机数
* 进制转换:位运算
* 大数问题
* 公倍数
* 素数
## ipv4 转 int
@@ -1,6 +1,10 @@
# 数值-加减乘除
* 等差数列
* 阶乘
## 求1+2+…+n
@@ -48,17 +52,11 @@ char[] factorial(int n){
```
## 1024! 末尾有多少个0?
## 实现两个正整数的除法(和取模)
编程实现两个正整数的除法,当然不能用除法操作符。
```
int div(const int x, const int y)
```
1. 循环减被除数,减到不能再减,当除数很大,被除数小时,效率很低
2. 位运算
分析:
末尾0的个数取决于2和5的个数
能被2整除的数比能被5整除的数要多得多,因此只统计被5整除的数的个数
@@ -74,6 +72,22 @@ int div(const int x, const int y)
## 实现两个正整数的除法(和取模)
编程实现两个正整数的除法,当然不能用除法操作符。
```
int div(const int x, const int y)
```
1. 循环减被除数,减到不能再减,当除数很大,被除数小时,效率很低
2. 位运算
## 两个数相乘,小数点后位数没有限制,请写一个高精度算法
@@ -81,13 +95,4 @@ int div(const int x, const int y)
## 1024! 末尾有多少个0?
分析:
末尾0的个数取决于2和5的个数
能被2整除的数比能被5整除的数要多得多,因此只统计被5整除的数的个数
@@ -0,0 +1,16 @@
# 数值-素树
> 如果一个数如果只能被 1 和它本身整除,那么这个数就是素数
## 返回区间 [2, n) 中有几个素数
```
int countPrimes(int n)
```
@@ -11,12 +11,30 @@
## 合并2个有序数列
合并2个有序数列 A 和 B, 其中 A 有足够的空间,也就是把B合并进A数组
如
```
A = [4,5,6]
B = [1,2,7]
合并后
A = [1,2,4,5,6,7]
```
思路1:
思路2:
## 两个序列和之差最小
有两个序列a,b,大小都为n,序列元素的值任意整数,无序;
要求:通过交换a,b中的元素,使[序列a元素的和]与[序列b元素的和]之间的差最小。
例如:
```
var a=[100,99,98,1,2, 3];
@@ -1,9 +1,6 @@
# 数列-查找
## 数组中超过出现次数超过一半的数字
题目:数组中有一个数字出现的次数超过了数组长度的一半,找出这个数字。
@@ -24,6 +21,22 @@
类似问题:找出数组中唯一的重复元素
## 查找只出现一次的元素
给一个非空整数数组,比如 [2, 2, 3] ,其余元素均出现2次,找出那个只出现一次的元素。
思路: 异或运算,成对儿的数字就会变成 0,落单的数字和 0 做异或还是它本身
```
int singleNumber(vector<int>& nums) {
int res = 0;
for (int n : nums) {
res ^= n;
}
return res;
}
```
## 数组中找出某数字出现的次数
@@ -112,7 +125,6 @@ Lin=< aK1,ak2,…,akm >,其中k1< k2<…< km且aK1< ak2<…< akm。
## 在从1到n的正数中1出现的次数