前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LintCode-761. 最小子集

LintCode-761. 最小子集

作者头像
悠扬前奏
发布2019-05-31 10:25:38
3750
发布2019-05-31 10:25:38
举报

题目

描述

给一非负整数数组. 取数组中的一部分元素, 使得它们的和大于数组中其余元素的和, 求出满足条件的元素数量最小值.

样例

给出 nums = [3, 1, 7, 1], 返回 1 给出 nums = [2, 1, 2], 返回 2

解答

思路

利用Java的sort()方法排序,从最大的数开始累加,累加和超过总和的一半需要的元素数量,就是所需值。

代码

代码语言:javascript
复制
public class Solution {
    /**
     * @param arr:  an array of non-negative integers
     * @return: minimum number of elements
     */
    public int minElements(int[] arr) {
        // write your code here
        List<Integer> nums = new ArrayList<>();
        int sum = 0, temp = 0;
        for(int num : arr){
            sum += num;
            nums.add(num);
        }
        Collections.sort(nums);
        int size = nums.size();
        for (int i = 1; i < size; i++){
            temp += nums.get(size - i);
            if(temp > sum / 2) return i;
        }
        return 0;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018.02.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
    • 描述
      • 样例
      • 解答
        • 思路
          • 代码
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档