zoukankan      html  css  js  c++  java
  • 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.

     

    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].

    Solution 1: The sum of differences between ai and bi should be smallest and sum of the distances of adjacent elements is the smallest. The proof can be seen in https://discuss.leetcode.com/topic/87206/java-solution-sorting-and-rough-proof-of-algorithm

     1 class Solution {
     2 public:
     3     int arrayPairSum(vector<int>& nums) {
     4         sort(nums.begin(),nums.end());
     5         long long res=0;
     6         for (int i=0;i<nums.size();i+=2){
     7             res+=nums[i];
     8         }
     9         return res;
    10     }
    11 };

    Solution 2: use bucket sort which is O(n)  https://discuss.leetcode.com/topic/87483/c-code-o-n-beats-100

  • 相关阅读:
    linux使用shell执行一个Python文件
    shell编程
    mysql之通过cmd连接远程数据库
    单词辨析
    安全测试
    Linux下使用crontab执行一个shell脚本
    重新梳理Linux系统中Python环境的问题
    selenium 定位元素不稳定怎么解决?
    爬虫数据分析的前景
    Linux下部署python selenium UI自动化测试
  • 原文地址:https://www.cnblogs.com/anghostcici/p/6916637.html
Copyright © 2011-2022 走看看