由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - 用Java做leetcode应该尽量遵循OO风格吗?
相关主题
热腾腾g电面 已挂c++ 问题: 用static local variables 还是 pass by reference
G家题讨论: harry potter 走矩阵Distinct Subsequence
问个题,bt中找最大的bstLeetcode problems' difficulty
有些面试官也是半桶水请教一下subset I 输出子集顺序问题
G onsite面经 加求blessing帮我看一下5行代码
one amazon interview problemG家面试题: Longest Increasing Sequence 2D matrix
ways of increasing subsequence (转载)贡献前天VMware电面面经,应该是挂了
一个简单的java问题请教一道公司面试题
相关话题的讨论汇总
话题: int话题: matrix话题: strength话题: cachekey
进入JobHunting版参与讨论
1 (共1页)
T*******e
发帖数: 18
1
如题。
比如用Dynamic Programming做Longest Common Subsequence,top down approach(
recursion),需要一个2d array存状态。
如果是在main中declare 一个2d array,然后在recursive function中当参数传递,开
销微增(pass by reference),但貌似更能体现出recursion的精神。
如果是定义成class instance variable,开销更小,code更简洁,也更能体现出OO的
思想。
请问是否面试官更欣赏第二种风格?
如果是的话,再推进一步,一切向OO风格看齐:一个problem当一个class来设计,所有
instance variable和methods该加private的都加。在解题的同时体现出良好的OO
class design素养,相比仿C风格所有method一路public static过去,是否会更受面试
官青睐?
多谢各大牛指点。
T*******e
发帖数: 18
2
自己小顶一下......
s*******m
发帖数: 38
3
在下以为面试时候一般就写个裸奔的method。。那有心思管这些。不过也无不可。如果
面试官觉得没必要他会叫停的
e********3
发帖数: 18578
4
当然要了,因为时间限制,你不需要具体写实现,但是跟面试官说清楚这是可以改进的
地方,只不过你因为时间紧迫就先take shortcut了,别人不是看你具体的代码如何,
主要看你的思路,知识面,以及是否仔细认真。

【在 T*******e 的大作中提到】
: 如题。
: 比如用Dynamic Programming做Longest Common Subsequence,top down approach(
: recursion),需要一个2d array存状态。
: 如果是在main中declare 一个2d array,然后在recursive function中当参数传递,开
: 销微增(pass by reference),但貌似更能体现出recursion的精神。
: 如果是定义成class instance variable,开销更小,code更简洁,也更能体现出OO的
: 思想。
: 请问是否面试官更欣赏第二种风格?
: 如果是的话,再推进一步,一切向OO风格看齐:一个problem当一个class来设计,所有
: instance variable和methods该加private的都加。在解题的同时体现出良好的OO

T*******e
发帖数: 18
5
非常感谢楼上各位的指点。我会根据自身coding速度做调整。
euclid2003在另一帖中的code就是个很好的参考。
http://www.mitbbs.com/article_t/JobHunting/32611137.html
import java.util.*;
public class HarryPotter{
private static Random rand = new Random();
private static int[][] matrix;
private static Map cache = new HashMap Integer>();

static class CacheKey{
public int x, y;
public CacheKey(int x, int y){
this.x = x;
this.y = y;
}

@Override
public boolean equals(Object obj){
CacheKey key = (CacheKey) obj;
return this.x == key.x && this.y == key.y;
}

@Override
public int hashCode(){
return ((Integer) (this.x+this.y)).hashCode();
}
}

public static int[][] createMatrix(int width, int height){
int[][] matrix = new int[height][width];
for (int i=0; i for (int j=0; j matrix[i][j] = rand.nextInt(50);
if (rand.nextBoolean()){
matrix[i][j] *= -1;
}
}
}
return matrix;
}

public static void printMatrix(int[][] matrix){
for (int i=0; i int j = 0;
for (; j System.out.print(matrix[i][j] + ", ");
}
System.out.println(matrix[i][j]);
}
}

public static int minimumStrength(int x, int y){
int strength = 0;
if (x == matrix[0].length-1 && y == matrix.length-1){
if (matrix[y][x] < 0){
strength = -1 * matrix[y][x];
}
} else if (x == matrix[0].length-1){

int nextStrength = cachedStrength(x, y+1);
strength = calcStrength(nextStrength, x, y);
} else if (y == matrix[0].length-1){
int nextStrength = cachedStrength(x+1, y);
strength = calcStrength(nextStrength, x, y);
} else {
int nextStrength = Math.min(cachedStrength(x, y+1),
cachedStrength(x+1, y));
strength = calcStrength(nextStrength, x, y);
}
System.out.println(x + ", " + y + " needs minimum strength of " +
strength);
return strength;
}

public static int cachedStrength(int x, int y){
CacheKey key = new CacheKey(x, y);
if (cache.containsKey(key)){
return cache.get(key);
} else {
int strength = minimumStrength(x, y);
cache.put(key, strength);
return strength;
}
}

private static int calcStrength(int nextStrength, int x, int y){
int strength = 0;
if (nextStrength == 0){
if (matrix[y][x] < 0) strength = -1 * matrix[y][x];
} else {
if (matrix[y][x] - nextStrength >= 0){
strength = 0;
} else {
strength = nextStrength - matrix[y][x];
}
}
return strength;
}
public static void main(String []args){
int size = 5;
matrix = createMatrix(size,size);
printMatrix(matrix);
cachedStrength(0,0);
}
}
e********3
发帖数: 18578
6
实际写代码还需要写comment,还要写getter,setter,如果比较复杂的话还要考虑
Interface和Abstract Class,最后还要写Unit Test,好几个模块还要写Integration
Test, 不过这些我都忽略了,但是一定要跟面试官说,表示你知道,不过因为时间紧迫
就只能忽略了,实际工作中一定会补上的。

【在 T*******e 的大作中提到】
: 非常感谢楼上各位的指点。我会根据自身coding速度做调整。
: euclid2003在另一帖中的code就是个很好的参考。
: http://www.mitbbs.com/article_t/JobHunting/32611137.html
: import java.util.*;
: public class HarryPotter{
: private static Random rand = new Random();
: private static int[][] matrix;
: private static Map cache = new HashMap: Integer>();
:

T*******e
发帖数: 18
7
非常详尽到位。 再次感谢。

【在 e********3 的大作中提到】
: 实际写代码还需要写comment,还要写getter,setter,如果比较复杂的话还要考虑
: Interface和Abstract Class,最后还要写Unit Test,好几个模块还要写Integration
: Test, 不过这些我都忽略了,但是一定要跟面试官说,表示你知道,不过因为时间紧迫
: 就只能忽略了,实际工作中一定会补上的。

l**********a
发帖数: 181
8
mark
w***y
发帖数: 6251
9
改版的leetcode是不是不显示testcase 的运行结果了?
只给这个
Submission Result: Accepted
y**********u
发帖数: 6366
10
平时面试官都在半睡半醒的过程中
你这种漂亮style要是做得慢了,人早不耐烦了

【在 T*******e 的大作中提到】
: 如题。
: 比如用Dynamic Programming做Longest Common Subsequence,top down approach(
: recursion),需要一个2d array存状态。
: 如果是在main中declare 一个2d array,然后在recursive function中当参数传递,开
: 销微增(pass by reference),但貌似更能体现出recursion的精神。
: 如果是定义成class instance variable,开销更小,code更简洁,也更能体现出OO的
: 思想。
: 请问是否面试官更欣赏第二种风格?
: 如果是的话,再推进一步,一切向OO风格看齐:一个problem当一个class来设计,所有
: instance variable和methods该加private的都加。在解题的同时体现出良好的OO

1 (共1页)
进入JobHunting版参与讨论
相关主题
请教一道公司面试题G onsite面经 加求blessing
求推荐学习recursive 算法的资料one amazon interview problem
Maximum Sum of Increasing Sequenceways of increasing subsequence (转载)
这道题DP怎么做阿一个简单的java问题
热腾腾g电面 已挂c++ 问题: 用static local variables 还是 pass by reference
G家题讨论: harry potter 走矩阵Distinct Subsequence
问个题,bt中找最大的bstLeetcode problems' difficulty
有些面试官也是半桶水请教一下subset I 输出子集顺序问题
相关话题的讨论汇总
话题: int话题: matrix话题: strength话题: cachekey