回复: 20
跳转到指定楼层
上一主题 下一主题
收起左侧

谷歌实习电面

全局:

2018(4-6月) 码农类General 博士 实习@google - 校园招聘会 - 技术电面  | | Other | 应届毕业生

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
去年10月份左右投的简历,然后一直没动静,结果1月初突然有人联系我说要面试,背靠背两轮约在今天早上,然后跪了……
第一轮印度小哥,上来先分别自我介绍了有10分钟,题是能否通过一次交换从第一个string变换到第二个,converse <-> conserve;
以为见过原题可以秒,结果debug了半天……_(:
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies
问了几个问题他就have a great day了。。。

第一次电面,leetcode刷了才30题不到,跪的妥妥的,还是要多刷题啊……_(:з」∠)_

评分

参与人数 1大米 +2 收起 理由
yiliaobailiao + 2 给你点个赞!

查看全部评分


上一篇:狗家onsite面试等了2周以后结果
下一篇:Pocket 宝石onsite面经整理,55题
推荐
devilnut 2018-1-31 06:17:49 | 只看该作者
全局:
第二题用递减栈 可以O(N)
回复

使用道具 举报

推荐
greynut 2018-2-13 06:58:15 | 只看该作者
全局:
oneexy 发表于 2018-2-13 06:16
8 3 9 5 9 4呢,你怎么办

[ 0 (8)]   [0 0 0 0 0 0]

[ 0(8) 1(3)]  [0 0 0 0 0 0]

[2(9) ]  [2,1,0 0 0 0]

[2(9) 3(5)]  [2,1,0 0 0 0]

[2(9) 4(9)]  [2,1,0,1,0,0]

[2(9),4(9), 5(4)] [2,1,0,1,0,0]

def find(nums):
    stack = []
    ans = [0] * len(nums)
    for i in range(len(nums)):
        if stack == [] or nums[i] <= nums[stack[-1]]:
            stack.append(i)
        else:
            while len(stack) > 0 and nums[i] > nums[stack[-1]]:
                idx = stack.pop(-1)
                ans[idx] = i - idx
            stack.append(i)
    return ans
哪里错了吗
请指教



回复

使用道具 举报

推荐
luogaoqi 2018-2-12 14:02:33 | 只看该作者
全局:
楼主思路的方向应该是对的,但我觉得是用TreeMap来代替priorityQueue因为TreeMap可以保持元素顺序, 以下代码仅供参考:
public int[] countDays(int[] days){
        if(days == null || days.length == 0) return new int[0];
        int length = days.length;
        int[] res = new int[length];
        TreeMap<Integer, Integer> map = new TreeMap<>();
        int left = 0;
        int right = 0;
        while(left < length){
                int cur = days[left];
                while(map.higherKey(cur) == null && right < length){
                        map.put(days[right], right);
                        right++;
                }
                if(map.higherKey(cur) != null){
                        int higherIdx = map.get(map.higherKey(cur));
                        res[left] = higherIdx - left;
                }
                map.remove(cur);
                left++;
        }
       
        return res;
}
时间复杂度nlogn
回复

使用道具 举报

🔗
oneexy 2018-2-12 10:51:36 | 只看该作者
全局:
devilnut 发表于 2018-1-31 06:17
第二题用递减栈 可以O(N)

worst case还是nlgn, 因为要全部入栈
回复

使用道具 举报

全局:
第二题扫一遍,O(n)
int n = days.length;
int[] res = new int[n];
int i = 0;
while(i < n - 1){
        int j = i+1;
        if(days[j] > days[i]){
                res[i] = j;
                i++;
        }else{
                while(j < n && days[j] <= days[i]){
                        j++;
                }
                if(j == n) return res;
                for(int k = i; k < j; k++){
                        res[i] = j;
                }
                i = j;
        }
}
return res;
回复

使用道具 举报

全局:
楼主能说下第一题具体怎么变换么?
回复

使用道具 举报

🔗
 楼主| rier2011 2018-2-13 04:25:11 | 只看该作者
全局:
爱学习的鼠哥 发表于 2018-2-12 11:36
楼主能说下第一题具体怎么变换么?

给一个string,能否通过交换其中的两个char来得到第二个string,仅限一次交换,比如conserve, 交换v和s,可以得到converse,要求返回v和s的index
回复

使用道具 举报

🔗
greynut 2018-2-13 04:26:04 | 只看该作者
全局:
oneexy 发表于 2018-2-12 10:51
worst case还是nlgn, 因为要全部入栈

如果是01似乎是可以O(n)
判断四种情况 00 01 10 11 就可以
但是我不太明白怎么用hashmap或者stack

请指教
回复

使用道具 举报

🔗
greynut 2018-2-13 04:26:13 | 只看该作者
全局:
oneexy 发表于 2018-2-12 10:51
worst case还是nlgn, 因为要全部入栈

如果是01似乎是可以 O(n)
判断四种情况 00 01 10 11 就可以
但是我不太明白怎么用hashmap或者stack

请指教
回复

使用道具 举报

🔗
oneexy 2018-2-13 04:45:16 | 只看该作者
全局:
greynut 发表于 2018-2-13 04:26
如果是01似乎是可以 O(n)
判断四种情况 00 01 10 11 就可以
但是我不太明白怎么用hashmap或者stack
  1. import java.util.*;
  2. class solution{
  3.         public static void main(String[] args) {
  4.                 int[] in = new int[]{8, 3, 3, 5, 9, 4};
  5.                 int[] res = find(in);
  6.                 System.out.println(Arrays.toString(res));
  7.         }

  8.         public static int[] find(int[] arr){
  9.                 int[] res = new int[arr.length];
  10.                 Queue<Integer[]> heap = new PriorityQueue<>((a,b)->a[0]-b[0]);
  11.                 for(int i=0; i<arr.length; i++){
  12.                         while(!heap.isEmpty() && heap.peek()[0] < arr[i]){
  13.                                 Integer[] pair = heap.poll();
  14.                                 res[pair[1]] = i - pair[1];
  15.                         }
  16.                         heap.add(new Integer[]{arr[i], i});
  17.                 }
  18.                 return res;
  19.         }

  20. }
复制代码
O(nlgn)解法
回复

使用道具 举报

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

本版积分规则

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