总结:
这次考的并不理想 比赛前好多知识点遗漏 但到此为止已经结束了
mod
是 模运算(Modulo Operation)的缩写,表示求两个数相除后的 余数
10mod3=1 (a % b) (7%2=1)
1e9代表1乘以10的9次方,也就是十亿
异或运算:基于二进制的位运算
Math
通过Math可以直接.出运算
Math.pow() 计算 a
的 b
次方
double result = Math.pow(double a, double b);
-
返回
double
类型结果 -
参数和返回值都是双精度浮点数
-
Math.PI
Math.abs()
计算数字的绝对值(即不考虑正负号的值)
pow(3,i)==n
表示:
-
计算3的i次方(3^i)
-
判断结果是否等于n
-
如果相等,则n是3的幂次方
-
Math.aqrt()
计算数字的平方根 -
(
Math.aqrt(9)=3)
-
异或运算
进制转换
将十进制数 126 转换为不同进制的结果如下:
通过不断除以 2.8.10.16,记录余数,直到商为 0,然后将余数倒序排列。
进制 | 表示方法 | 结果 |
---|---|---|
二进制 | Base 2 | 1111110(2) |
八进制 | Base 8 | 176(8) |
十进制 | Base 10 | 126(10) |
十六进制 | Base 16 | 7E(16) |
十六进制是基于 16 的进制系统,每一位可以是 0 到 9 和 A 到 F(A=10, B=11, ..., F=15)。
日期模拟
二分查找
i < arr.length
(最常用)
-
要用
1.1 确保所有元素都被检查<=
-
当
left == right
时,区间内仍有一个元素需要检查: -
使用
<
会漏掉left == right
的情况 -
使用
<=
能确保检查完所有可能的元素int left = 0; int right = nums.length - 1; // 注意初始右边界 while (left <= right) { // 关键点:使用 <=
-
变量定义
对于循环临时变量:总是定义在循环内部 降低复杂度
-
int sum=0;while(num>=10){ } sum = 0; // 必须手动重置 } while(num >= 10){int sum = 0; // 定义在内部 // 不需要手动重置sum }
需要保持状态的变量:才定义在外部
DP:线性 背包 计划搜索
数组排序
数组查找
-
数组越界
-
始终记住数组索引范围是0到length-1
-
使用
i < array.length
作为循环条件
-
字符串