update sequence
This commit is contained in:
@@ -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出现的次数
|
||||
|
||||
|
||||
Reference in New Issue
Block a user