参加了腾讯视频的笔试,一共有四道算法题。
1 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。有多少种不同的方法可以爬到楼顶。
n=1 steps = 1
n=2 steps= 2
n=3 steps = 3
n=4 steps = 5
n=5 steps = 8
.....
这是一个菲波那切数列数列,代码如下:
public static int stepTimes(int n) { if (n == 0 || n == 1 || n == 2) return n; return stepTimes(n - 1) + stepTimes(n - 2); }
2 有一个超大文件,里面只有整型数和空格,求所有数字的和,输入一个string 字符串.以下代码慎用, 不符合题目要求,可以参考一下.具体怎么做我需要研究一下(....)
//有一个超大文件,里面只有整型数和空格 求所有数字的和 输入一个string 字符串 public static String getFileInt() { BufferedReader bufferedReader = null; BufferedWriter bufferedWriter = null; String str = null; int sum = 0; try { bufferedReader = new BufferedReader(new FileReader("D:/111.txt")); while((str=bufferedReader.readLine())!=null){ System.out.println(str); String[] st = str.split(" "); for (String s:st){ sum=Integer.parseInt(s)+sum; } } bufferedReader.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return "所有数的和:"+sum; }
3 //硬币 有数量不限的硬币,币值为25分、10分、5分和1分,请编写代码计算n分有几种表示法。为了防止溢出,请将答案Mod 1000000007。
4 //输入一个数字n 求0-n中2出现的次数,注意 22算两个