关于算法学习
Published in:2022-04-02 | category: 算法

        这周我们主要学习了算法。我一直感觉我的算法挺差劲的,所以在假期一直在按照组长的要求写算法,虽然进步了一点点,但是通过这周的学习我还是清楚地意识到了我的算法真的很差。

        超出数据范围是我在这周的学习过程中遇到的比较多的一个问题。有一次写算法的时候我用了long型还是超出数据范围,那个时候我才知道了大数字BigIntegger,当数据很大的时候,用大数就可以解决问题,但是大数的加减乘除和Int型的不太一样:

        最常用的构造方法:

1
BigInteger bi = new BigInteger("5");
  BigInteger类的常用运算方法
方法名称说明
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)返回较大的数值

         除了超出数据范围之外还有超出时间限制。超出时间限制主要是因为我的代码运行起来太麻烦。我想了想,应该是我写的题太少了,掌握的解题方法什么的都不是很多,当遇到一个算法题的时候我第一时间想到的方法往往都很麻烦,所以我觉得我以后还是要多刷一点题,看一些题解,多学习一些解题方法。

        还有就是对于链表我掌握的不多,这几天的任务中布置有关于链表的题,最近要加油补一下关于链表的知识点了。

        总之就是好好加油吧,多刷点题,遇到不会的题研究一下题解,学习一下别人的解题思路,努力提升自己,加油!!!

Prev:
初始项目总结(一)
Next:
SpringMVC