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

  • 相关阅读:
    easyui datagride 两种查询方式
    SharePoint常用目录介绍
    sharepoint 2013 入门1_ 建立一个网页程序
    Windows2012 显示我的电脑
    你知道 react-color 的实现原理吗
    如何实现 Promise 池
    如何使 pdf 文件在浏览器里面直接下载而不是打开
    macOS 安装 oh-my-zsh 之后 node 失效的问题
    剑指offer[47]——求1+2+3+...+n
    剑指offer[46]——孩子们的游戏(圆圈中最后剩下的数)
  • 原文地址:https://www.cnblogs.com/anghostcici/p/6916637.html
Copyright © 2011-2022 走看看