
ACM
主要分享一些我的刷题方法和刷题会用到的一些工具类和集合,最重要的是会分享刷题模板
!0 !
小码农一枚
展开
-
刷题常用之集合、集合工具类详解
这里写目录标题一、前言二、Collection接口常用方法1、向集合中添加元素:boolean add(E e)2、返回集合中元素的个数:int size()3、判断当前集合是否为空:boolean isEmpty()4、返回遍历这个集合的迭代器对象:Iterator< E > iterator()5、把一个指定集合中的所有数据,添加到当前集合中:boolean addAll(Collection<? extends E> c)6、判断当前集合中是否包含给定的对象:boolean c原创 2021-05-20 15:07:28 · 774 阅读 · 0 评论 -
刷题常用之大数类、数学类
一、前言数学和大数类都是我们刷题比较常用的类,在笔试的时候两个类都可以用,但是在面试的时候尽量不要用大数类,因为大数类是java语言特有的(虽然有很多语言也有大数,但是不是所有语言都有大数,比如c++),所以面试的时候面试官考大数是为了考你逻辑,而不是考你java大数类用得怎么样。接下来我们就来介绍一下常用的方法,二、数学类一般我们会用到前六点,后面的了解即可。1、两个属性System.out.println(Math.E);//2.718281828459045;常数eSystem.out.p原创 2021-05-15 22:27:19 · 289 阅读 · 0 评论 -
刷题常用之包装类(Integer常用方法、属性以及与String转换、进制转换)
一、前言包装类是为了让基本数据类型具有类的特征而设计的,在集合中经常用到,因为集合的泛型必须给是类类型。我们经常用到的包装类和字符串类的转换,所以下面我将会把包装类常见的方法,以及包装类与字符串类的转换方法举例说明一下。二、Integer类常用方法以及属性举例1、常用静态属性(直接Integer.xxx调用)MAX_VALUE: 表示 int 型的最大值(2147483647)MIN_VALUE: 表示 int 型的最小值(-2147483648)2、常用方法举例//把100分别转为十进制原创 2021-05-11 20:29:23 · 236 阅读 · 0 评论 -
刷题常用之String、StringBuilder的常用方法以及转换
一、前言在我们刷题的时候字符串用得还是很多的,而JAVA中有三种字符串(String、StringBuilder、StringBuffer),那我们应该如何选择用那种字符串呢?一般情况都使用String,但是如果增删改操作很多建议用StringBuilder(线程不安全,效率高)。下面我总结了常用的字符串操作,不用去背,但是每个都要清楚有什么用,能在做题的时候用到,这些方法虽然也许不能提高程序的运行效率,但是能让我们写题的效率大大提高。二、String类常用方法int length():返回字符串的原创 2021-05-07 09:04:13 · 1446 阅读 · 2 评论 -
JAVA高精度除法模板
1.思路直接模拟手动写除法,先从最高位开始除,一直除到最低为,返回被除的结果,t用来保存余数。为了和前面模板相对应,所以采用的倒序存储a。返回值也为倒叙,余数t为正序。2.代码模板方法一:static int t = 0; //用来保存余数public static List<Integer> divide(List<Integer> a, int b) { List<Integer> c = new ArrayList<Integer>()原创 2021-04-23 17:07:32 · 249 阅读 · 0 评论 -
JAVA高精度乘法模板(大数乘以一个小数)
1.思路高精度乘法是大数乘以一个int型的小数,和前面模拟不同,这里不是一位一位的乘,而是a一位乘以整个数b,当a乘到最高位且没有进位就结束了。2.代码模板方法一://a为大数,倒序存储,b为int型,返回a*b的结果public static List<Integer> multiply(List<Integer> a, int b) { int t = 0; //保存进位 List<Integer> c = new ArrayList<原创 2021-04-23 16:32:17 · 718 阅读 · 0 评论 -
JAVA高精度减法模板
1.思路大数减法的思路和大数相加差不多,模拟手动写减法。先判断A是否大于B,如果A小于B,则要交换A和B,用大一点的数减去小一点的数,最后输出时补负号,我们手写减法时会从个位开始相减,如果不足就要借位,一直到最高位。2.代码模板方法一://倒序存储,a和b都是第一个为个位,最后一个为最高位,返回值c也一样。如123,实际上a是321存储的public static List<Integer> subtract(List<Integer> a, List<Integer原创 2021-04-23 15:59:14 · 301 阅读 · 0 评论 -
JAVA高精度加法模板--三种解法
1.思路大数加法主要是模拟手写的加法,我们手写加法时会从个位加上进位一位一位的运算一直加到最高位,就能计算出结果。2.代码模板//a,b为要相加的大数,返回a+b的结果//注意这里的a,b以及要返回的c都是倒序存储的,也就是说第一位是个位,最后一位才是最高位,这就相当于模拟我们手动写加法public static List<Integer> add(List<Integer> a, List<Integer> b) { List<Integer&g原创 2021-04-22 22:26:44 · 220 阅读 · 0 评论 -
浮点数二分模板(求平方根或者立方根)
1.思路拿一道题来举例好说明一点,求一个数的立方根 https://www.acwing.com/problem/content/792/2.代码模板double l = -10000, r = 10000; //l是给出的数据范围的下边界,r是给出的数据范围的上边界while (r - l > 1e-8) { // 精度为1e-8 double mid = (l + r) / 2; //中点 if (mid * mid * mid >= target原创 2021-04-22 11:13:27 · 384 阅读 · 0 评论 -
整数二分查找模板(单调一定可以二分,二分不一定要单调)
1.思路(二分查找分为查找左边界和右边界)a为要查找的数组,x为数组要查找的数,要求要查找x的左右边界查找左边界,也就是从左往右找到的第一个不小于x的数①确定分界点mid,mid为区间的中点mid=l + r >> 1;②判断a[mid]是否小于x,小于则代表答案在右边且不包含mid这个点,否则就代表答案在左边且包含mid这个点③继续下一次查找,直到l >= r,跳出循环查找右边界,也就是从左往右找到的第一个不大于x的数①确定分界点mid,mid为区间的中点 mid = l原创 2021-04-22 10:36:26 · 281 阅读 · 0 评论 -
归并排序模板--基于分治
1. 思路①确定分界点mid,mid为区间 l 到 r 的中间位置上面的点②递归排序左右两边③将排序好的左右两边合并 (难点)2. 代码模板//a为要排序数组,l为左边界,r为有边界public static void m_Sort(int[] a, int l, int r) { if(l >= r) return; //如果区间只有一个元素,或者没有元素直接返回 int mid = l + r >> 1; //取区间[l,r]中间位置的点,原创 2021-04-22 09:25:44 · 89 阅读 · 0 评论 -
快排模板--基于分治(简单优雅)
1. 思路①确定分界点x,在区间[ l , r ]随意取一个数②根据分界点x调整,使得x左边的数都小于等于x,x右边的数都大于等于x (难点)③递归处理左边和右边2. 代码模板//a为要排序数组,l为左边界,r为有边界public static void quickly_Sort(int[] a, int l, int r) { if(l >= r) return; //如果区间没有数,或者只有一个数 int x = a[l]; //确定分界点,在区间[原创 2021-04-21 22:39:41 · 167 阅读 · 0 评论 -
刷题常用之数组工具类Arrays
一、java.util.Arrays类的定义java.util.Arrays类是一个数组工具类,里面有很多静态方法可以直接供我们调用,去操作数组。使用时需导包: import java.util.Arrays;二、常用方法toString方法:把数组变为对应的String形式int[] a = { 1,3,5,2,6,8};System.out.println(Arrays.toString(a));//结果:[1, 3, 5, 2, 6, 8]copyOf方法:可以把一个数组进行原创 2021-04-20 10:36:36 · 173 阅读 · 0 评论 -
刷题方法(五步刷题法)
刷题方法(五步刷题法)先介绍一下我刷题的方法–五步刷题法。这是我看的极客时间覃超老师的刷题方法。为什么要刷5遍题目呢?其实刷题最重要的是过遍数,也就是说每题花的时间少,但是要多刷几遍,形成记忆(大牛就可以不用看了,我这里只针对像我一样的小白)。其实我自己刷题也深有体会,刷过的题过了很久就忘记了,如果能刷5遍,效果会更好。好的,接下来我来介绍一下这五步刷题法到底是怎么刷的。第一遍:5~10分钟:读题+思考。如果不会直接看题解,然后理解题解中的解法,并且比较不同解法的时间和空间的复杂度(一定要对比,我面试原创 2021-04-19 19:22:52 · 5395 阅读 · 2 评论