San Jose各个房价 <1.5m 区域买房总结

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货
E轮2.5亿美元融资
K12教育独角兽一起作业
北京-诚聘人工智能/教育/大数据岗
坐标湾区
Games Startup
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
码农求职神器Triplebyte:
不用海投
内推多家公司面试
把贵司招聘信息放这里
查看: 3022|回复: 12
收起左侧

FB第一轮面试

[复制链接] |试试Instant~ |关注本帖
tigerbro 发表于 2016-2-21 00:00:08 | 显示全部楼层 |阅读模式

2016(1-3月) 码农类General 硕士 全职@Facebook - 猎头 - 技术电面  | Pass | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

x
给一个正数n,打印出所有相加的组合
例如10可以打印出. 留学申请论坛-一亩三分地
1+1+1+...1
1+2+1+...1
..
9+1
10. 1point 3acres 论坛
. 牛人云集,一亩三分地
在本论坛得到帮助不少,希望onsite能顺利. from: 1point3acres

评分

1

查看全部评分

本帖被以下淘专辑推荐:

duduhaha 发表于 2016-2-21 03:50:43 | 显示全部楼层
输入是10的话,楼主这题 "9 + 1" 和 " 1 + 9"应该只能输出一个吧?
回复 支持 反对

使用道具 举报

 楼主| tigerbro 发表于 2016-2-21 04:22:49 | 显示全部楼层
duduhaha 发表于 2016-2-21 03:50
输入是10的话,楼主这题 "9 + 1" 和 " 1 + 9"应该只能输出一个吧?

对,不能重复
回复 支持 反对

使用道具 举报

beer 发表于 2016-2-28 00:37:30 | 显示全部楼层
这个是Combination Sum 的变种嘛?初始化set {1,2,...,n}, 用DFS一层一层搜。
回复 支持 反对

使用道具 举报

 楼主| tigerbro 发表于 2016-2-28 03:19:39 | 显示全部楼层
beer 发表于 2016-2-28 00:37
这个是Combination Sum 的变种嘛?初始化set {1,2,...,n}, 用DFS一层一层搜。
. 围观我们@1point 3 acres
没错,很像,简单些
回复 支持 反对

使用道具 举报

xiaohui5319 发表于 2016-3-24 10:01:33 | 显示全部楼层
void printAllCombinations(int target, string path, vector<string>& paths, vector<int>& candidates, int startPos) {
  if (target == 0) {
    cout << path.substr(1) << endl;
    paths.push_back(path);
  }
  for (int i = startPos; i < candidates.size(); i++) {
    if (candidates[i] > target) break; //reach a candidate that is bigger than target
    printAllCombinations(target - candidates[i], path + "+" + to_string(candidates[i]), paths, candidates, i);
  }
}
-google 1point3acres
int main() {.留学论坛-一亩-三分地
  int n = 10;
  vector<string> paths;. Waral 博客有更多文章,
  vector<int> candidates;
  for (int i = 1; i <= n; i++) candidates.push_back(i);
  int startPos = 0;
  printAllCombinations(n, "", paths, candidates, startPos);
}
回复 支持 反对

使用道具 举报

mingzhou1987 发表于 2016-3-24 14:51:23 | 显示全部楼层
没有重复的版本。. 1point3acres
void dfs(int step, string curStr, int curSum, int target)
{
        if (curSum > target)return;
        if (curSum == target)
        {
                curStr.pop_back(); //pop out last '+'. 留学申请论坛-一亩三分地
                cout << curStr << endl;. 留学申请论坛-一亩三分地
        }
        for (int i = step; i <= target; i++). Waral 博客有更多文章,
        {
                if (i == target && curSum == 0)
                {. 1point3acres
                        cout << i << endl;
                }. more info on 1point3acres
                else
                {
                        dfs(i, curStr + to_string(i) + '+', curSum + i, target);. 牛人云集,一亩三分地
                }
        }
}
回复 支持 反对

使用道具 举报

sealove999 发表于 2016-4-12 15:29:55 | 显示全部楼层
  1. public class Solution {
  2.   public List<List<Integer>> expression(int n, int startpos) {. 一亩-三分-地,独家发布
  3.     List<List<Integer>> ret = new ArrayList<>();
  4.     if (n == 0) {
  5.       List<Integer> list = new ArrayList<>();
    . 一亩-三分-地,独家发布
  6.       ret.add(list);
  7.       return ret;
  8.     }
  9.     for (int i = startpos; i <= n; i++) {
  10.       List<List<Integer>> r = expression(n - i, i);. 1point 3acres 论坛
  11.       if (!r.isEmpty()) {. from: 1point3acres
  12.         for (List<Integer> l : r) {
  13.           l.add(0, i);
  14.           ret.add(l);
  15.         }. from: 1point3acres
  16.       }
  17.     }
  18.     return ret;
  19.   }

  20.   public static void main(String[] args) {. 一亩-三分-地,独家发布
  21.     Solution s = new Solution();.留学论坛-一亩-三分地
  22.     for (List<Integer> l : s.expression(10, 1)).本文原创自1point3acres论坛
  23.       System.out.println(l);
  24.   }. 留学申请论坛-一亩三分地
  25. }
复制代码
Mobile Apps Category (English)728x90
回复 支持 反对

使用道具 举报

sheepmiemies 发表于 2016-6-22 08:57:20 | 显示全部楼层
mark一下。。。现在回头看思路要清晰一些
1. 可以直接构造一个数组[1, n],强行转化成 LC 的 Combination Sum I。多了O(n)的空间。. 1point3acres
2. dfs的时候,给定一个上界pos,从上界pos循环到1。这个的输出结果会和LZ的例子比较像。. 1point 3acres 论坛
. from: 1point3acres
补充内容 (2016-6-22 08:57):. 留学申请论坛-一亩三分地
忘了标注了,是两种方法。。。
回复 支持 反对

使用道具 举报

hunter12345654 发表于 2016-7-22 09:04:27 | 显示全部楼层
这个算dp不
. from: 1point3acres 感觉总的思想就是 f(n)=f(0)+f(1)+f(2)+...+f(n-1);


回复 支持 反对

使用道具 举报

997562971@qq.co 发表于 2016-7-31 06:27:20 | 显示全部楼层
  1. public class FBsum {
  2.     public List<List<Integer>> fbSum(int num){
  3.         ArrayList<List<Integer>> rst= new ArrayList<>();.1point3acres网
  4.         ArrayList<Integer> path = new ArrayList<>();
  5.         helper(rst,path,num);
  6.         return rst;
  7.     }
  8.     private void helper(ArrayList<List<Integer>> rst, ArrayList<Integer> path, int num) {
  9.         if(num == 0){
  10.             rst.add(new ArrayList(path));
  11.             return;.1point3acres网
  12.         }
  13.         int start = 0;. 围观我们@1point 3 acres
  14.         if(path.size()==0){
  15.             start = 1;. 牛人云集,一亩三分地
  16.         }else{
  17.             start = path.get(path.size()-1);
  18.         }
  19.         for(int i=start;i<=num;i++){
  20.             path.add(i);. 留学申请论坛-一亩三分地
  21.             helper(rst,path,num - i);
  22.             path.remove(path.size()-1);
  23.         }
  24.     }
  25.     public static void main(String[] args) {
  26.         FBsum sol = new FBsum();
  27.         List<List<Integer>> rst = sol.fbSum(4);
  28.         System.out.println(rst.toString());   . 牛人云集,一亩三分地
  29.     }
  30. }
复制代码

补充内容 (2016-7-31 06:31):. 围观我们@1point 3 acres
写了个比较容易看懂的dfs。简单试了下,应该没问题。. Waral 博客有更多文章,
. 1point 3acres 论坛
补充内容 (2016-7-31 06:31):
写了个比较容易看懂的dfs..
回复 支持 反对

使用道具 举报

wzs9988 发表于 2016-7-31 07:01:39 | 显示全部楼层
  1. public static void main(String[] args) {
  2.     System.out.println(combination(10));. Waral 博客有更多文章,
  3. }. 留学申请论坛-一亩三分地
  4. public static List<List<Integer>> combination(int n) {
  5.     List<List<Integer>> res = new ArrayList<>();
  6.     combination(res, new ArrayList<>(), n, 1);. 1point 3acres 论坛
  7.     return res;
  8. }
  9. private static void combination(List<List<Integer>> res, List<Integer> cur, int n, int start) {
  10.     if (n == 0) {
  11.         res.add(new ArrayList<>(cur));
  12.     } else {
  13.         for (int i = start; i <= n; ++i) {
  14.             cur.add(i);
  15.             combination(res, cur, n - i, i);
  16.             cur.remove(cur.size() - 1);
  17.         }
  18.     }
  19. }
复制代码

评分

1

查看全部评分

回复 支持 反对

使用道具 举报

xnature 发表于 2016-8-16 07:45:51 | 显示全部楼层
short python code
. 留学申请论坛-一亩三分地
  1. def f(n):
  2.     ans = []
  3.     ret = [[]]
  4.     while True:
  5.         less = filter(lambda x:sum(x) < n, ret). 一亩-三分-地,独家发布
  6.         eq = filter(lambda x:sum(x) == n, ret). 留学申请论坛-一亩三分地
  7.         ans.extend(eq). 围观我们@1point 3 acres
  8.         if less:. 留学申请论坛-一亩三分地
  9.             ret = [r + [i] for r in less for i in range(r[-1] if r else n, 0, -1)]
  10.         else:
  11.             return ans. 留学申请论坛-一亩三分地
复制代码
. from: 1point3acres

还可以优化但是写起来就难看了
回复 支持 反对

使用道具 举报

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明

custom counter

GMT+8, 2018-5-26 12:40

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表