免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: jronald
打印 上一主题 下一主题

据说是微软面试题 [复制链接]

论坛徽章:
0
51 [报告]
发表于 2006-12-10 20:45 |只看该作者

python解此题很简洁

  1. a = [i+1 for i in range(2000)]
  2. flag = 1
  3. while len(a) > 1:
  4.     last = a[-1]
  5.     a = [a[i] for i in range(len(a)) if i%2==flag]
  6.     if a[-1] == last:
  7.         flag = 1
  8.     else:
  9.         flag = 0

  10. print a
复制代码


答案是1952

论坛徽章:
0
52 [报告]
发表于 2007-08-12 18:25 |只看该作者
我觉得你们都好牛哦,我什么都不会,好难过,现在自学C,因为上学期没有好好听老师讲课

论坛徽章:
0
53 [报告]
发表于 2007-08-13 14:01 |只看该作者
原帖由 langue 于 2006-12-5 05:56 发表
不如说是智商测试题。


是啊,好像和算法或者coding没啥关系

论坛徽章:
0
54 [报告]
发表于 2007-08-13 14:14 |只看该作者
我贴我写的.

  1. #include <stdio.h>

  2. typedef struct test {
  3.         struct  test*   next;
  4.         struct  test*   prev;
  5.         int             value;
  6. }test;

  7. fun()
  8. {
  9.         test*           list;
  10.         test*           node;
  11.         test*           p;
  12.         test*           q;
  13.         list = (test*)malloc(sizeof(struct test));
  14.         list->value = 1;
  15.         list->next = NULL;
  16.         list->prev = NULL;
  17.         int i = 2;
  18.         for(i; i <= 2000; i++) {
  19.                 node = (test*)malloc(sizeof(struct test));
  20.                 node->value = i;
  21.                 if(list->next == NULL) {
  22.                         list ->next = node;
  23.                         list ->prev = node;
  24.                         node->next = list;
  25.                         node->prev = list;
  26.                 }
  27.                 else {
  28.                         node->prev = list->prev;
  29.                         node->next = list;
  30.                         list->prev->next = node;
  31.                         list->prev = node;
  32.                 }
  33.         }
  34.         p = list;
  35.         while(p ->next != p) {
  36.                 q = p;
  37.                 p ->prev->next = p ->next;
  38.                 p->next->prev = p ->prev;
  39.                 p = p->next->next;
  40.                 free(q);
  41.         }
  42.         printf("the value:%d\n", p->value);
  43. }
  44. int main()
  45. {
  46.         fun();
  47.         return 0;

  48. }
复制代码

答案为 the value:1952

[ 本帖最后由 yuangong 于 2007-8-13 14:18 编辑 ]

论坛徽章:
0
55 [报告]
发表于 2007-08-13 14:50 |只看该作者
原帖由 langue 于 2006-12-8 19:56 发表


我怎么觉得这就像转换二进制时候用的短除法呀,呵呵


这个方法我喜欢。

论坛徽章:
0
56 [报告]
发表于 2011-01-21 23:29 |只看该作者
very good

论坛徽章:
22
丑牛
日期:2014-08-15 14:32:0015-16赛季CBA联赛之同曦
日期:2017-12-14 15:28:14黑曼巴
日期:2017-08-10 08:14:342017金鸡报晓
日期:2017-02-08 10:39:42黑曼巴
日期:2016-11-15 15:48:38CU十四周年纪念徽章
日期:2016-11-09 13:19:1015-16赛季CBA联赛之同曦
日期:2016-04-08 18:00:03平安夜徽章
日期:2015-12-26 00:06:30程序设计版块每日发帖之星
日期:2015-12-03 06:20:002015七夕节徽章
日期:2015-08-21 11:06:17IT运维版块每日发帖之星
日期:2015-08-09 06:20:002015亚冠之吉达阿赫利
日期:2015-07-03 08:39:42
57 [报告]
发表于 2011-01-22 08:08 |只看该作者
口算 (*^__^*) 嘻嘻

论坛徽章:
0
58 [报告]
发表于 2011-01-22 10:44 |只看该作者
(2000循环左移1)-1=1952

2000: 11111010000
2000循环左移1:11110100001
2000循环左移1-1:11110100000= ...
crspo 发表于 2006-12-07 12:02



  看到题感觉应该可以用位运算,但是想了半天也每个头绪。。。

论坛徽章:
0
59 [报告]
发表于 2011-01-22 11:53 |只看该作者
2000

论坛徽章:
0
60 [报告]
发表于 2011-01-22 19:51 |只看该作者
记得数据结构中学过吧
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP