【刷题日记】算法题常用数学算法和技巧
本文题目难度标识:🟩简单,🟨中等,🟥困难。
两数交换
常用写法
中间变量法
1 | // 记法:记住变量首尾相接,怎么写都不会错 |
这种方法可读性高,但是需要在内存中存放临时变量。
数学运算法
1 | // 加减法 |
方法评价:
- 加减法:两个数相加之后,可能其结果超出了变量类型能表达的最大范围,这个时候结果就会出数据溢出,不推荐使用。
- 异或法:效率是最高的,但是可读性不是很好。
Java 中编写 swap
交换函数
Java 在有参函数调用时,如果参数传递的是基本类型,进行的是值传递,而不是 地址或引用传递。
因此,以下的写法是错误的:
1 | public static void swap(int a, int b); |
正确的写法是传入一个数组,在数组的基础上进行交换:
1 | public static void swap(int[] arr) { |
循环增减
1 | // 循环增减 |
将比较关系整数化
得到 a 和 b 的大小关系,小于是 -1,等于是 0,大于是 1
1 | // 布尔大小比较转为输出整数 |
四舍五入
1 | // 四舍五入 |
向上取整转变为向下取整
对于正整数 ,有:
我们可以根据这个性质将一些向上取整操作处理为向下取整。
最大公约数 GCD
辗转相除法数学定理:gcd(a,b) = gcd(b,a mod b)
1 | // 迭代版本 |
递归版本:
1 | // 递归版本 |
相关题目:
质数的判断
本文参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 半方池水半方田!
评论