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

  • 相关阅读:
    编辑距离算法详解:Levenshtein Distance算法
    直方图均衡化
    Dev之ChartControl控件(二)— 绘制多重坐标图形
    SVM支持向量机算法
    Dev之ChartControl控件(一)
    KNN邻近分类算法
    广州.NET微软技术俱乐部提技术问题的正确方式
    .NET微软技术 开源项目建设
    广州.NET微软技术俱乐部与其他技术群的区别
    广州.NET微软技术俱乐部 微信群有用信息集锦
  • 原文地址:https://www.cnblogs.com/anghostcici/p/6916637.html
Copyright © 2011-2022 走看看