LintCode-761. 最小子集

题目

描述

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

样例

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

解答

思路

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

代码

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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Scala与Java的关系 Scala与Java的关系是非常紧密的!! 因为Scala是基于Java虚拟机,也就是...
    灯火gg阅读 8,806评论 1 24
  • 动态规划 111. 爬楼梯思路类似斐波那契数列注意考虑第 0 阶的特殊情况 272. 爬楼梯 II思路类似上题,只...
    6默默Welsh阅读 7,112评论 0 1
  • 我是一个热爱生活,喜欢摄影,喜欢阅读与文字,喜欢音乐和电台的九零后女生,每天生活虽然简单,但过得非常充实与快乐,做...
    皮卡可丘阅读 5,660评论 14 9
  • 爱情是一个亘古不变的热闹话题,既然有恋爱自然就会有失恋,而前任就此诞生。电影《前任三》是前任系列的第三部,其实说是...
    AS蚊子阅读 6,220评论 2 1
  • 问刘十九 唐 · 白居易 绿蚁新醅酒, 红泥小火炉。 晚来天欲雪, 能饮一杯无? 上海没有雪,体验一下古诗里的雪吧
    JessicaH2017阅读 2,767评论 0 5