2016.5.30 jd算法面试题

原创 2016年05月30日 18:33:34
# encoding=utf-8

# 2016.5.30 jd算法面试题

# 问题描述:
# 给出一张手机号码表
# 1 2 3
# 4 5 6
# 7 8 9
#   0

# 从1开始,每次只能往右、往下走一格、或者不走
# 走到了某一格上可以选择按或者不按
# 现在给出一个数字,判断该数字能否通过以上方式得到
# 可以则返回数字本身
# 不行则返回比该数字小的数中的最大数

# example:
#   input: 1477     return: 1477
#   input: 2560     return: 2559
#   input: 4587     return: 4580

# 先定义迁移字典
move_dict = {1:range(2,10)+[0],
             2:[2,3,5,6,8,9,0],
             3:[3,6,9],
             4:range(4,10)+[0],
             5:[5,6,8,9,0],
             6:[6,9],
             7:range(7,10)+[0],
             8:[8,9,0],
             9:[9],
             0:[0]}


def judge(string):
    val = [int(x) for x in string]
    i = 0
    while i<len(val)-1:
        if val[i+1] in move_dict[val[i]]:
            i += 1
            continue
        else:
            # 一旦不符合规则,就需要改数,过程如下
            max_v = None
            # 在val[i]的下一位中寻找小于val[i+1]的最大数
            for va in sorted(move_dict[val[i]]):
                if va<val[i+1]:
                    max_v = va
##            print 'max_v: ', max_v
            if max_v is None:
                # 如果没找到,则回溯
                val[i] -= 1
            else:
                val[i+1] = max_v
                i += 1
            # 改完i/i+1后,剩余位可以自动修改为最大
            for j in range(i+1,len(val)):
                val[j] = max(move_dict[val[j-1]])
            break
    return int( ''.join([str(x) for x in val]) )

def test_judge():
    import random
    for i in range(10):
        num = str(random.randint(0,10**4))
        print num+': ', judge(num)

test_judge()



运行结果如下:








版权声明:本文为博主原创文章,未经博主允许不得转载。

京东2017校园招聘数据与算法方向笔试题

昨天做了一下京东的在线笔试。京东这次笔试题分为三个部分,第一部分是选择题30道,第二部分是2道编程题,第三部分是5道实用性更强的选择题。这里仅贴出题目,不提供答案。 一、选择题 1、设循环队列...
  • JIEJINQUANIL
  • JIEJINQUANIL
  • 2016年09月06日 17:57
  • 5698

京东面试算法题-爬山

第一题:爬山时间限制:C/C++语言 1000MS;其他语言 3000MS 内存限制:C/C++语言 65536KB;其他语言 589824KB 题目描述: 小B曾经酷爱网络游戏,整日通宵达旦的...
  • u012780602
  • u012780602
  • 2016年09月20日 00:06
  • 657

京东JS面试题

该题难度系数: ★★★★ 考查的技术点: 1). 原型与原型链  2). 实例对象,构造函数,Object, Function的关系 题目如下: var F = func...
  • qq_27682041
  • qq_27682041
  • 2017年08月06日 00:29
  • 388

京东面试题——走台阶

一道典型的递归问题。
  • JiajieZhuo
  • JiajieZhuo
  • 2017年04月08日 12:33
  • 705

2016.5.30 jd算法面试题

# encoding=utf-8 # 2016.5.30 jd算法面试题 # 问题描述: # 给出一张手机号码表 # 1 2 3 # 4 5 6 # 7 8 9 # 0 # 从1开始,每次只...
  • sinat_20396827
  • sinat_20396827
  • 2016年05月30日 18:33
  • 608

京东2016春招(实习)笔试+编程题

岗位:数据挖掘、机器学习、算法、模式识别 京东这套题出的耗时可以的,难度不是特别大,编程题感觉非常难理解,光看题干就看了老半天,当时简直吓尿了,一琢磨其实很简单。我只能回忆一部分内容,25选择+2编...
  • chixujohnny
  • chixujohnny
  • 2016年04月09日 21:17
  • 1326

JD面试

今天回jd 面试了,面了两面,感觉还可以,但是这也暴露出自己coding能力确实不行的问题。首先说coding吧 第一面只有一道题,leetcode原题,可以看我博客 http://blog.c...
  • gdmmzmj
  • gdmmzmj
  • 2017年08月11日 21:01
  • 272

计蒜客444-京东的物流路径(树上分治算法)

作为一个电子商务为主体的公司,京东一直努力实现自己“多、快、好、省”的承诺。其中,“快”的特质更是被京东发挥到了极致。京东建立了一个非常高效的物流网络,物流网络构成了一个树结构,由很多的物流点和将物流...
  • u012969412
  • u012969412
  • 2015年07月30日 09:16
  • 1155

【面经】2017.4 腾讯基础研究岗实习面试

腾讯的一面广州有两个地点,一个是珠江新城的希尔顿,另外一个是东圃喜来登。应该是按照不同部门所以分配的地方也是不同的。面的岗位是腾讯的基础研究岗。 笔试 笔试在清明节的假期举行,题型和模拟考的都是一...
  • qq_22641333
  • qq_22641333
  • 2017年04月14日 10:57
  • 755

面试机器学习、大数据岗位时遇到的各种问题

自己的专业方向是机器学习、数据挖掘,就业意向是互联网行业与本专业相关的工作岗位。各个企业对这类岗位的命名可能有所不同,比如数据挖掘/自然语言处理/机器学习算法工程师,或简称算法工程师,还有的称为搜索/...
  • BigBzheng
  • BigBzheng
  • 2016年08月14日 09:31
  • 1565
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2016.5.30 jd算法面试题
举报原因:
原因补充:

(最多只允许输入30个字)