zoukankan      html  css  js  c++  java
  • leetcode 561. Array Partition I

    Given an array of 2n integers, your task is to group these integers into n pairs of integer, say (a1, b1), (a2, b2), ..., (an, bn) which makes sum of min(ai, bi) for all i from 1 to n as large as possible.

    Example 1:

    Input: [1,4,3,2]
    
    Output: 4
    Explanation: n is 2, and the maximum sum of pairs is 4 = min(1, 2) + min(3, 4).
    

    Note:

    1. n is a positive integer, which is in the range of [1, 10000].
    2. All the integers in the array will be in the range of [-10000, 10000].

    题目大意:给定一个2n长度的整数数组,将其分n对整数, 即(a1, b1), (a2, b2), ..., (an, bn), 求

                                                                                                                                           

     而

                                                                        

     我们有

    由于前面那项是常数,我们只要考虑让后面那项最小,即

    显然,要让和最小,尽量让每一对数,尽可能接近。经过整理,得到最大值为数组排序后的奇数项之和。

     1 class Solution {
     2 public:
     3     int arrayPairSum(vector<int>& nums) {
     4         sort(nums.begin(), nums.end());
     5         int sum = 0;
     6         for (int i = 0; i < nums.size(); i += 2) {
     7             sum += nums[i];
     8         }
     9         return sum;
    10     }
    11 };
  • 相关阅读:
    sax解析xml案例二
    mysql之删除重复数据
    Android之Intent探究
    struts2之Action名称的搜索顺序
    struts2自定义拦截器二——模拟session超时的处理
    struts2之防止表单重复提交
    Android之日期及时间选择对话框
    sax解析xml案例一
    Android之单选按钮对话框
    查询修改nls_database_parameters系统配置
  • 原文地址:https://www.cnblogs.com/qinduanyinghua/p/11850775.html
Copyright © 2011-2022 走看看