华为OD-分积木/分苹果

题目描述

哥哥弟弟分一堆积木,每块积木重量不同。弟弟要求平分两组,每组数量可以不同但总重量必须相等。

然而弟弟只会二进制并且加法不进位。例如三块积木 3,5,6 分成两组 [3] 和 [5,6]

弟弟认为 5(二进制1001)加上6(二进制1010)是0011:

1001

1010


0011

然后 3 的二进制也是 0011,所以弟弟认为两组积木等重,接受这种分配方案。哥哥实际能分到 5+6=11 块积木。

要求输出哥哥能拿的最大实际重量。如果给定的积木没法按弟弟视角分成重量相等的两组,就输出'NO'。

示例一

输入

5,6,3

输出

11

代码实现

python 复制代码
# coding:utf-8
# 分积木/分苹果
# https://zhuanlan.zhihu.com/p/521401344?utm_id=0
# https://www.nowcoder.com/discuss/353159159166214144


class Solution:
    def allocateBlock(self, s):
        aweight = 0
        s = list(map(int, s))
        for i in range(len(s)):
            aweight = aweight ^ s[i]
        if aweight == 0:
            s.sort(reverse=True)
            s.pop()
            return sum(s)
        return -1


if __name__ == '__main__':
    s = list(input('input:').split(' '))
    solution = Solution()
    print(solution.allocateBlock(s))
相关推荐
^^为欢几何^^几秒前
lodash中_.difference如何过滤数组
javascript·数据结构·算法
豆浩宇1 分钟前
Halcon OCR检测 免训练版
c++·人工智能·opencv·算法·计算机视觉·ocr
Narutolxy3 分钟前
Python 单元测试:深入理解与实战应用20240919
python·单元测试·log4j
浅念同学16 分钟前
算法.图论-并查集上
java·算法·图论
何不遗憾呢25 分钟前
每日刷题(算法)
算法
Amo Xiang26 分钟前
2024 Python3.10 系统入门+进阶(十五):文件及目录操作
开发语言·python
立志成为coding大牛的菜鸟.29 分钟前
力扣1143-最长公共子序列(Java详细题解)
java·算法·leetcode
鱼跃鹰飞30 分钟前
Leetcode面试经典150题-130.被围绕的区域
java·算法·leetcode·面试·职场和发展·深度优先
liangbm336 分钟前
数学建模笔记——动态规划
笔记·python·算法·数学建模·动态规划·背包问题·优化问题
潮汐退涨月冷风霜41 分钟前
机器学习之非监督学习(四)K-means 聚类算法
学习·算法·机器学习