zoukankan      html  css  js  c++  java
  • 1403. 非递增顺序的最小子序列『简单』

    题目来源于力扣(LeetCode

    一、题目

    1403. 非递增顺序的最小子序列

    题目相关标签:贪心算法、排序

    提示:

    • 1 <= nums.length <= 500
    • 1 <= nums[i] <= 100

    二、解题思路

    1. 据题意,即找出数组中最大的几个数,该数相加后的和,大于数组中的其他元素

    2. 对 nums 数组进行元素的求和,得到总和

    3. 对 nums 数组进行元素从小到大的排序

    4. 倒序遍历 nums 数组,依次加上数组中较大的数,当子序列的和,大于其他元素的和时,返回结果

    三、代码实现

    public static List<Integer> minSubsequence(int[] nums) {
        int sum = 0;
        // 遍历计算出数组的元素总和
        for (int num : nums) {
            sum += num;
        }
        List<Integer> list = new ArrayList<>();
        // 元素从小到大排序
        Arrays.sort(nums);
    
        int ans = 0;
        // 倒序遍历
        for (int i = nums.length - 1; i >= 0; i--) {
            ans += nums[i];
            list.add(nums[i]);
            // 判断 ans 子序列和是否大于 其他元素的和
            if (ans > (sum - ans)) {
                // 已经大于其他元素和时,结束
                break;
            }
        }
        return list;
    }
    

    四、执行用时

    五、部分测试用例

    public static void main(String[] args) {
        int[] nums = {4, 3, 10, 9, 8};  // output:{10, 9}
    //    int[] nums = {4, 4, 7, 6, 7};  // output:{7, 7, 6}
    //    int[] nums = {6};  // output:{6}
        
        List<Integer> result = minSubsequence(nums);
        System.out.println(result);
    }
    
  • 相关阅读:
    数据库面试题
    MySQL表的导入
    MySQL表的导出
    MySQL安装mydumper
    MySQL中的日志
    动态数组实现下压栈
    动态数组
    设计模式之迭代器
    设计模式之组合模式
    设计模式之状态模式
  • 原文地址:https://www.cnblogs.com/zhiyin1209/p/13020096.html
Copyright © 2011-2022 走看看