今日头条笔试题

我只能记住大概,如果有纰漏,再修改。

1.看程序写返回值,并说明原因。

int foo(int n)

{

static int i=1;

n=n+i;

i++;

if(n<5)

n=n+foo(n);

return n;

}

foo(1);

分析: i是静态变量,只会被赋值一次,然后被foo函数共有,然后就是计算递归的值,答案是13.

2. counter=5

A.counter++;

B.counter--;

AB分别属于两个进程,求counter可能的结果。

分析:可能是4 5 6

A读 B读  A写 B写  是4

A读  A写 B读 B写  是5

A读 B读 B写  A写 是6


编程题

1.长度不超过1000的数组,有若干0,把这些0提前,其他元素相对位置不变,例子

{4,0,1,0,2,,3,6,0,5}->{0,0,0,4,1,2,3,6,5}

空间复杂度是O(1) 时间复杂度尽可能低


分析:分三步

1.统计0的个数。

2.从后移位。

3.填充前面的0.

空间复杂度是O(1)  时间复杂度是O(n)


2.在一个无向图中,给定一个节点,如包含该节点的最小环。如果没有这样的环,返回0。

例如下图,给定2,返回0  给定3 返回 3 ,4,6,5  给定6,返回6,7,8


不会。凑


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值