• 请不要在回答技术问题时复制粘贴 AI 生成的内容
codechaser
V2EX  ›  程序员

给定 n 个数,每次可以删除任意两个不同的数字,问最后能否删除完毕?

  •  
  •   codechaser · Aug 29, 2019 · 5423 views
    This topic created in 2622 days ago, the information mentioned may be changed or developed.

    这题有什么特殊的地方吗?奇数个数字删不完,偶数个数字的话,如果有个数字的数量超过了 n/2,也删不完。面试官说存在数字数量小于 n/2 的也删不完的反例,没想出来。

    26 replies  •  2019-08-30 17:37:17 +08:00
    lxy42
    lxy42
    Aug 29, 2019 via Android
    1
    也没规定只能有一个数字是重复的啊。如果多个数字重复呢?像 1 1 2 2 3 3 不就删不万。
    lxy42
    lxy42
    Aug 29, 2019 via Android
    2
    @lxy42 删不完
    ipwx
    ipwx
    Aug 29, 2019 via Android
    3
    @lxy42 删除两个自己选择的任意数字吧…… 删的完
    Caballarii
    Caballarii
    Aug 29, 2019
    4
    @lxy42 12,23,31,删完了
    Vanquish5419
    Vanquish5419
    Aug 29, 2019 via iPhone
    5
    不存在反例
    假设有重复数字小于 n/2 删不完的情况,不妨设最后剩下 2k 个 1,因为 1 的个数小于 n/2,那之前两两删除的数字对中,至少有 k 对两个都不是 1 的,那么换一下就可以删完了
    lxy42
    lxy42
    Aug 29, 2019 via Android
    6
    @ipwx @Caballarii 是我没想清楚。如果所有数字的重复次数小于等于 n/2,应该是可以删完的。
    xml123
    xml123
    Aug 29, 2019
    7
    每次挑剩下数量最多的两个数就行了
    xenme
    xenme
    Aug 29, 2019
    8
    觉得不存在反例。
    假设剩下的数字为 A,那么剩下的就是 N(n>1) 对 A。
    所有的已删除数字对必然包含 A,如果不包含 A,比如 BC,那么一定可以拆分成 AB/AC 删除。
    由此可以确定,剩下数字 A 的个数必然大于 N/2
    Archangell
    Archangell
    Aug 29, 2019
    9
    全都相同的数 怎么删的完 例 四个一
    xenme
    xenme
    Aug 29, 2019 via iPhone
    10
    @Archangell 但这个不是反例
    Archangell
    Archangell
    Aug 29, 2019
    11
    @xenme 这不是反例 是什么
    GM
    GM
    Aug 29, 2019
    12
    题目不严谨,无法回答。
    N 个数是否允许重复?
    可以删除两个不同的数中的“可以”,是必须每次都删除两个不同的数,还是“可以”删相同的也可以删不同的,甚至也“可以”不删?

    细节不严谨,限制不一样,答案就会不一样。
    xenme
    xenme
    Aug 29, 2019 via iPhone
    13
    @Archangell 1 的重复次数 4 大于了 n/2 (也就是 4/2 )
    jjianwen68
    jjianwen68
    Aug 29, 2019
    14
    数学问题有请数学专业的高手解答
    xenme
    xenme
    Aug 29, 2019 via iPhone
    15
    @GM 肯定允许重复,否则就不存在题目了啊,偶数个不重复的肯定全删光啊。

    可以的定义肯定也是只能是不同的两个数才可以删除,否则偶数个数字肯定也是全删光
    daozhihun
    daozhihun
    Aug 29, 2019
    16
    感觉答主的回答没毛病,一个数字出现的次数没有超过 n/2 一定可以删完。你当时应该反问面试官,要他给你据一个例子
    zealot0630
    zealot0630
    Aug 29, 2019 via Android
    17
    每次删除俩最多的,数学归纳法可证明可行
    popvlovs
    popvlovs
    Aug 29, 2019
    18
    只要理解没有偏差,不存在反例,至少有 N/2 个一样的数
    starsriver
    starsriver
    Aug 29, 2019 via Android
    19
    能删光。

    递增数列问题,数字就是符号,每次产生 n 个相同的数组合到数列后面,然后随机删去 2m 个数字。

    不能最多减最少或最多减最多,你不能保证每次都有这种条件,应该是最多的减数量处于中间的,每次都进行计算,找到最多的和数量处于中间的,必然可以减完。
    no1xsyzy
    no1xsyzy
    Aug 30, 2019
    21
    直接排序后对切,然后 x[i] x[i+n/2] 各取一个,肯定能取空
    排序后 x[i] != x[i+n/2]
    kx5d62Jn1J9MjoXP
    kx5d62Jn1J9MjoXP
    Aug 30, 2019
    22
    可以证明只要重复最多的数字不超过一半就能删完
    catcalse
    catcalse
    Aug 30, 2019
    23
    1。2。2.。2.2.3
    rocketman13
    rocketman13
    Aug 30, 2019
    24
    不存在反例吧
    luozic
    luozic
    Aug 30, 2019
    25
    构建对等数据集合 {{x },{y}} ,这个可以用有理数的集合论来分析了,咋删不完的? 除非你这个“任意”是设计的。 设计好的删除方式
    codechaser
    codechaser
    OP
    Aug 30, 2019 via Android
    26
    @GM 允许重复,必须每次删除两个不同的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1310 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 54ms · UTC 22:24 · PVG 06:24 · LAX 14:24 · JFK 17:24
    ♥ Do have faith in what you're doing.