感慨下:
最近和做算法的同学(java web中途转的)聊天,闻知他现在仍然在持续刷题保持状态,甚是敬佩,算法是练脑子的好方法,
就像以前喜欢做数学题一样,纯粹。数学讲基础和逻辑,一层层递进的理论。不理解整数,分数,小数,计算不会好;不熟
悉一元一次方程,因式分解,那基本上高阶和多元方程,指数,对数方程也不要想;三角函数推理证明过程不理解,想记忆公
式,吃力;我没有专门刷过算法题目,所以对自学的数据结构,算法思想,不像以前数学那样可以做到看到题目就知道思路,只用
写出规范的解题步骤。
所以准备像我的那位一样,从入门,初级开始做起,一点点积累,以下是我的一些总结,仅作记录小本本
Scanner in = new Scanner(System.in)
nextInt(),nextLong(),nextFloat(),nextDouble():直至读取到空格或回车之后结束,读取到的数值;对应判断使用hasNextInt()
牛客上的对nextXXX的解释有点复杂,这里有个我认为比较简单的方法:
假设"有效字符"指我们常用的StringUtils.isEmpty()为true的字符,那么空格,大片空白,换行符都是非有效字符
hasNext(),next():就是一直读取,遇到"非有效字符"前,读到的String值,
hasNextLine(),nextLine():一直读,直到读取到非有效字符中换行符这种情形(说明:遇到空格还是继续读完)
一组数据直接next,确定多少组数据直接for,不确定用while
Math. pow(r,3)求立方
Math. sqrt(x),求平方根
求余
m%100:求数字的各个位数用除以10的倍数取余数
1<<n:计算2的n次方
Math.ceil():向上取整
Math.floor():向下取整
Math.round():四舍五入
String. format("%.2f",f):保留小数位数
进制数互转:
其他进制 ------> 十进制:Integer.parseInt(String s, int radix) 10 ------> 其他:Integer.toString(int i,int radix) 10 ------> 16:Integer.toHexString(int i) 10------> 8:Integer.toOctalString(int i) 10------> 2:Integer.toBinaryString(int i)
判断偶数:(n&1)==0 true表示偶数
求三个数字中的最大值:Math.max(n3, Math.max(n1, n2))
String.split()
String.substring
String.valueOf():int值或char[]
String.toCharArray()
字符和ASCII码互转:(int)char,(char)int
字符串反转:StringBuilder. reverse
是否包含某个字符(字符串):String.contains(Charsequence c)
字符是否是数字:Character.isDigit(char or int)
字符是否是字母:Character.isLetter(char or int)
是否是小写字母:Character.isLowerCase(char ch)
对List<Integer> 排序:
从小到大:Collections.sort(list)
从大到小: Collections.reverse(list)
从小到大:Arrays.sort(int[] a)
for(int i=0;i<n;i++){}
for(int i=1;i<=n;i++){}
for(int i=arr.length-1;i>=0;i--){}
原文:https://www.cnblogs.com/yb38156/p/14517262.html