12
返回列表 发新帖
楼主: rockmanzero2
跳转到指定楼层
上一主题 下一主题
收起左侧

Google intern 面经

🔗
lxia 2015-8-4 18:56:17 | 只看该作者
全局:

You are given an array of n elements [1,2,....n]. For example {3,2,1,6,7,4,5}.
Now we create a signature of this array by comparing every consecutive pir of elements. If they increase, write I else write D. For example for the above array, the signature would be "DDIIDI". The signature thus has a length of N-1. Now the question is given a signature, compute the lexicographically smallest permutation of [1,2,....n]. Write the below function in language of your choice.

vector* FindPermute(const string& signature);


和这题 http://www.careercup.com/question?id=14912744 类似?

回复

使用道具 举报

🔗
Neil_Acton 2015-11-25 03:49:56 | 只看该作者
全局:
这面经发的也是醉了 一堆人才半天猜出来是什么个意思  。。。
回复

使用道具 举报

🔗
achilleszou 2016-11-5 07:40:53 | 只看该作者
全局:
第二题我的代码:
  1. void findWiggle(String path) {
  2.         ListNode fakeHead = new ListNode(0);
  3.         //start from 1
  4.         fakeHead.next = new ListNode(1);
  5.         ListNode iInsert = fakeHead.next;
  6.         ListNode dInsert = fakeHead;
  7.         for (int i = 0; i < path.length(); i++) {
  8.                 if (path.charAt(i) == 'i') {
  9.                         iInsert.next = new ListNode(i+2);
  10.                         iInsert = iInsert.next;
  11.                         dInsert = dInsert.next;
  12.                 } else {
  13.                         dInsert.next = new ListNode(i+2);
  14.                 }
  15.         }
  16.         print(fakeHead.next);
  17. }
复制代码
回复

使用道具 举报

🔗
qeroqero 2016-11-6 00:40:53 | 只看该作者
全局:
achilleszou 发表于 2016-11-5 07:40
第二题我的代码:

这对吗?dddddddd怎么处理
回复

使用道具 举报

🔗
achilleszou 2016-11-6 03:03:37 | 只看该作者
全局:
qeroqero 发表于 2016-11-6 00:40
这对吗?dddddddd怎么处理

code 少些了一行,用ide 写了一下:

  1. class ListNode {
  2.     int val;
  3.     ListNode next;
  4.     ListNode(int val ) {
  5.         this.val = val;
  6.     }
  7. }
  8. public class Solution {
  9.     public void print(ListNode node) {
  10.         while(node != null) {
  11.             System.out.print(node.val + ",");
  12.             node = node.next;
  13.         }
  14.         System.out.println();
  15.     }
  16.     public void findWiggle(String path) {
  17.         ListNode fakeHead = new ListNode(0);
  18.         //start from 1
  19.         fakeHead.next = new ListNode(1);
  20.         ListNode iInsert = fakeHead.next;
  21.         ListNode dInsert = fakeHead;
  22.         for (int i = 0; i < path.length(); i++) {
  23.             if (path.charAt(i) == 'i') {
  24.                 iInsert.next = new ListNode(i+2);
  25.                 iInsert = iInsert.next;
  26.                 dInsert = dInsert.next;
  27.             } else {
  28.                 ListNode tmp =  dInsert.next;
  29.                 dInsert.next = new ListNode(i+2);
  30.                 dInsert.next.next = tmp;
  31.             }
  32.         }
  33.         print(fakeHead.next);
  34.     }
  35. }
复制代码
跑出来是 8,7,6,5,4,3,2,1,
回复

使用道具 举报

🔗
MicX 2016-11-6 21:38:49 | 只看该作者
全局:
achilleszou 发表于 2016-11-6 03:03
code 少些了一行,用ide 写了一下:跑出来是 8,7,6,5,4,3,2,1,

没太懂。可以稍微解释一下吗?这是贪心?
回复

使用道具 举报

🔗
achilleszou 2016-11-8 01:28:17 | 只看该作者
全局:
MicX 发表于 2016-11-6 21:38
没太懂。可以稍微解释一下吗?这是贪心?

1,...n 可以满足任何 长度为n-1 的 类似于 ddididid 这样的wiggle sequence,问题是如何构造。

我用的的是链表,如果当前的字符是i,就把数字放到最后,如果是d,就把当前数字放到最近的i的位置

时间O(n) 空间O(1) (如果结果可以用链表表示的话),应该是最优解吧
回复

使用道具 举报

🔗
thunderink 2016-11-8 01:50:34 | 只看该作者
全局:
signature是什么完全没看懂...
回复

使用道具 举报

🔗
JoshISEE 2016-12-10 09:32:43 | 只看该作者
全局:
achilleszou 发表于 2016-11-8 01:28
1,...n 可以满足任何 长度为n-1 的 类似于 ddididid 这样的wiggle sequence,问题是如何构造。

我用的 ...

你的解答没太看懂,能不能讲具体点?谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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