一道题目想到的
来源:互联网 发布:手机淘宝二维登录 编辑:程序博客网 时间:2024/05/21 06:34
昨天晚上陪人参加阿里的网络面试,看到一道题目,大概意思是:
由1、2、3、4、5组成的数字中,大于23154且小于45132的数字有多少个?1
本意应该是让使用排列组合计算吧,我直接写了一个简单的程序解决了。忽然发现,其实有好多的题目是要求把一个数字的各个位置的数字提取出来的。于是今天又稍加归纳,写了一个通用的函数。内容如下:
def getDigitNum(num): i = 0 while num > 0: num = (int)(num / 10) i = i+1 return idef getDigit(num, n): bit = getDigitNum(num) n = bit - n + 1 den = 10 ** (n - 1) return (int)(num / den) % 10count = 0a = [0] * 5for i in range(12345, 54322): if i > 23154 and i < 45132: for j in range(getDigitNum(i)): a[j] = getDigit(i, j + 1) if sorted(a) == range(1, 6): count = count + 1print count
思路非常简单,将需要的位数移至个位(通过除法+取整),余10即可。
其实,这个思路如果不加总结的话,每次都可以想出来。但是,总结之后,以后碰到这个问题就不用再思考了。小问题记思路,大问题就写一个自己用的库吧,就像《Unix网络编程》里面的一样!
以后要注意这些小问题了。能够加快解决问题的速度。
- 具体的数字不记得了,这个是我自己编的。 ↩
0 0
- 一道题目想到的
- 由一道数据结构题目想到的
- 由一道面试题目想到的
- 由一道题目想到的C++编译器优化问题
- 从java一道多线程题目想到
- 由一道试题想到的
- 由一道牛客题目想到系统调用和库函数
- 通过一道“蹩脚”的题想到的
- 由一道面试题想到的
- 由中兴一道笔试题想到的
- 由一道高考题而想到的
- 从朋友圈一道小学试题想到的
- 一道有趣的题目
- 一道用递规做的题目
- 经典的一道题目.
- 笔试的一道题目
- 一道题目的解答
- 一道小学的题目
- JSTL标签 参考手册
- 全志A20配置使用spi 功能
- 线程局部变量ThreadLocal
- Ubuntu搭建Eclipse+JDK+SDK的Android
- 【WinPcap】编程环境搭建——VC++2013
- 一道题目想到的
- paxos投票
- objective-c-runtime
- 向量偏移——由“食物链”引发的总结
- appcan学习开始之手机震动及停止
- C++ Primer 读书笔记
- Java 调用打印机打印图片
- Spannable简介
- iOS开发工具——统计Crash的工具Crashlytics