这周我们主要学习了算法。我一直感觉我的算法挺差劲的,所以在假期一直在按照组长的要求写算法,虽然进步了一点点,但是通过这周的学习我还是清楚地意识到了我的算法真的很差。
超出数据范围是我在这周的学习过程中遇到的比较多的一个问题。有一次写算法的时候我用了long型还是超出数据范围,那个时候我才知道了大数字BigIntegger,当数据很大的时候,用大数就可以解决问题,但是大数的加减乘除和Int型的不太一样:
最常用的构造方法:
1 | BigInteger bi = new BigInteger("5"); |
| 方法名称 | 说明 |
|---|---|
| add(BigInteger val) | 做加法运算 |
| subtract(BigInteger val) | 做减法运算 |
| multiply(BigInteger val) | 做乘法运算 |
| divide(BigInteger val) | 做除法运算 |
| remainder(BigInteger val) | 做取余数运算 |
| divideAndRemainder(BigInteger val) | 做除法运算,返回数组的第一个值为商,第二个值为余数 |
| pow(int exponent) | 做参数的 exponent 次方运算 |
| negate() | 取相反数 |
| shiftLeft(int n) | 将数字左移 n 位,如果 n 为负数,则做右移操作 |
| shiftRight(int n) | 将数字右移 n 位,如果 n 为负数,则做左移操作 |
| and(BigInteger val) | 做与运算 |
| or(BigInteger val) | 做或运算 |
| compareTo(BigInteger val) | 做数字的比较运算 |
| equals(Object obj) | 当参数 obj 是 Biglnteger 类型的数字并且数值相等时返回 true, 其他返回 false |
| min(BigInteger val) | 返回较小的数值 |
| max(BigInteger val) | 返回较大的数值 |
除了超出数据范围之外还有超出时间限制。超出时间限制主要是因为我的代码运行起来太麻烦。我想了想,应该是我写的题太少了,掌握的解题方法什么的都不是很多,当遇到一个算法题的时候我第一时间想到的方法往往都很麻烦,所以我觉得我以后还是要多刷一点题,看一些题解,多学习一些解题方法。
还有就是对于链表我掌握的不多,这几天的任务中布置有关于链表的题,最近要加油补一下关于链表的知识点了。
总之就是好好加油吧,多刷点题,遇到不会的题研究一下题解,学习一下别人的解题思路,努力提升自己,加油!!!




