【面试宝典】python篇四

CSDN话题挑战赛第2期
参赛话题:面试宝典

众人拾柴火焰高,我们一起携手共筑面试宝典,可以将各语言各技术各类面试真题或者你刷过的面试题汇聚于此,金九银十之际,让我们助应聘同学一臂之力~

面试流程

面试流程有七步:
(1)问候场白;
(2)公司简介、职位简介;
(3)面试流程介绍;
(4)围绕简历提问;
(5)试探性提问;
(6)轻松题;
(7)向面试官提问;

面试题

面试题一:

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

 

问题剖析:

看题目找规律

问题解答:

  1. N=int(input())
  2. if N==1:
  3. print('1')
  4. else:
  5. L=[[0]*N for i in range(N)]
  6. L[0][0]='1'
  7. for i in range(1,N):
  8. L[i][0]=str(int(L[i-1][0])+i)
  9. #print(L)
  10. for i in range(N-2,-1,-1):
  11. for j in range(1,N):
  12. if L[i+1][j-1]==0:
  13. pass
  14. else:
  15. L[i][j]=str(int(L[i+1][j-1])+1)
  16. #print(L)
  17. for i in L:
  18. while 0 in i:
  19. i.remove(0)
  20. for i in L:
  21. print(' '.join(i))

面试题二:

某校大门外长度为L的马路上有一排树,每两棵相邻的树之间的间隔都是1米。我们可以把马路看成一个数轴,马路的一端在数轴0的位置,另一端在L的位置;数轴上的每个整数点,即0,1,2,……,L,都种有一棵树。

由于马路上有一些区域要用来建地铁。这些区域用它们在数轴上的起始点和终止点表示。已知任一区域的起始点和终止点的坐标都是整数,区域之间可能有重合的部分。现在要把这些区域中的树(包括区域端点处的两棵树)移走。你的任务是计算将这些树都移走后,马路上还有多少棵树。

 

问题剖析:

1,这个题目如果用数组来做,及有树代表1,无树代表0,很好解题,但是我尝试了一下,提示报错“超出限制”,所有我用了另外一种方式。
2,将两个有重复的区域合并为一个区域,及最后只需要计算不包含的区域的树即可

问题解答:

  1. lon, area = map(int, input().split())
  2. list1 = []
  3. for i in range(0, area):
  4. start, end = map(int, input().split())
  5. list1.append((start, end))
  6. def hbArr(arr):
  7. for a in range(0, len(arr) - 1):
  8. if(a+1<len(arr)):
  9. for b in range(a + 1, len(arr)):
  10. a1, a2, a3, a4 = arr[a][0], arr[a][1], arr[b][0], arr[b][1]
  11. tmp = [a1,a2,a3,a4]
  12. tmp.sort()
  13. xx1 = str(a1) + "_" + str(a2)
  14. xx2 = str(a3) + "_" + str(a4)
  15. xx = str(tmp[0]) + "_" + str(tmp[1])
  16. #通过排序的方式确定两个区域是否有重合部分
  17. if (not (xx == xx1) and not(xx==xx2) ) or (xx ==xx1 and a2==a3 )or (xx ==xx2 and a4==a1) :
  18. arr.pop(b)
  19. arr.pop(a)
  20. arr.append((tmp[0], tmp[3]))
  21. hbArr(arr)
  22. break
  23. return arr
  24. list2 = hbArr(list1)
  25. sum = 0
  26. for i in list2:
  27. sum+= i[1]-i[0]+1
  28. print(lon+1-sum)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值