系列说明:
【面试算法题总结】系列主要是以各个算法为单元总结常见算法题,主要题源为leetcode的《剑指offer》和《hot100》两个专题。链接如下:
剑指offer和hot100
这里简单说明一下,一道题目可能有多种解法,或者类似题目却有完全不同的解法,我每篇总结的例题并不一定用的都是标题写的算法,而是可能会拓展更多有关解法,以及类似题目。
反正最终目标就是:誓死解决写算法得过且过、缺少训练量的问题。不熟的代码就一遍一遍的写,一遍一遍的理解,直到会写为止。
面试时写算法的一点个人建议:
- 高效运行>运行成功>运行失败:想出低效思路后,思考3分钟有没有高效思路,如果没有就先用低效思路写出来,保证先运行成功;想用一些现成的方法简化代码,但方法名实在是想不起来就自己实现一下,保证先运行成功
- 变量命名,实在不会对应英文就直接用个字母,犹豫半天写个错误单词更狼狈
- 多写注解,即给面试官看,也是给自己看
- 要传回去的值再考虑要不要用全局变量吧,其他的就通过参数传递就好
- 运行成功之前要自信、自信、再自信。要有 “就这破题还不是小意思” 的自信
- 运行成功之后要小心、小心、再小心。要有正确性、健壮性和优化时间、空间的思考
输入输出处理基础:
并不是所有公司的机试环境都是“核心代码模式”,有些是“ACM模式”,需要自己写输入输出处理。牛客、力扣等编程平台的编码模式也都是根据题库来的,可能是核心代码模式,也可能是ACM模式。这是无法选择的,只能适应。
Scanner类
(1)next() 与 nextLine() 方法获取输入的字符串,读取前一般使用 hasNext 与 hasNextLine 判断是否还有输入的数据
next以空格结束。nextLine以回车结束,使用它时要确定好游标的真正位置,可能要先处理一个多余的回车
(2)如果要输入 int 或 float 类型的数据,输入之前先使用 hasNextXxx() 方法进行验证,再使用 nextXxx() 来读取
例题1 特定个数的数字输入
/**数组求和 一直输入
1 5
10 20
6
30* */
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
int a = sc.nextInt();// long a=sc.nextLong();
int b = sc.nextInt();// long b=sc.nextLong();
System.out.println(a + b