当前位置:网站首页>Force deduction - question 561 - array splitting I - step by step parsing
Force deduction - question 561 - array splitting I - step by step parsing
2022-07-07 22:44:00 【Bobo loves learning】
Given length is 2n Array of integers for nums , Your task is to divide these numbers into n Yes , for example (a1, b1), (a2, b2), …, (an, bn) , Make from 1 To n Of min(ai, bi) The sum is the greatest .
- Their thinking :
It is important to read the questions first , Suppose the length of the given array is 6, Can be divided into 3 Group .
Suppose we sort first , After sorting, we take two by two ,
give :[1,2,3,4]
Divided into :(1,2),(3,4)
min(1,2) = 1
min(3,4) = 3
Last , The maximum sum is 4
Code 1 :
A common way of writing in various languages is as follows , use Python As an example :
class Solution(object):
def arrayPairSum(self, nums):
nums.sort()
res = 0
for i in range(0, len(nums), 2):
res += min(nums[i], nums[i + 1])
return res
---- Time complexity :O(N * log(N))O(N∗log(N)), More than the 31% Submission of .
---- Spatial complexity :O(1)O(1).
Code 2 :
about Python for , We can use slicing , Simplify the code to :
class Solution(object):
def arrayPairSum(self, nums):
nums.sort()
return sum(nums[::2])
---- Time complexity :O(N * log(N))O(N∗log(N)), More than the 100% Submission of , Visible slice ratio for The cycle is faster .
---- Spatial complexity :O(N)O(N), Slicing produces a new array , It takes up space .
Code three :
about Python for , Code 2 above can be further reduced to one line . because nums.sort() It's in place 、 no return value , So we need to use sorted(nums) Function returns a new array , We can continue slicing on the basis of the returned results .
class Solution(object):
def arrayPairSum(self, nums):
return sum(sorted(nums)[::2])
---- Time complexity :O(N * log(N)), Slower than method 2 . Should be sorted() Function copies the array, resulting in .
---- Spatial complexity :O(N),sorted() Functions and slicing operations produce new arrays , It takes up space .
Code example :
class Solution:
def arrayPairSum(self, nums) -> int:
nums.sort() # Sort
print(' After sorting nums:',nums)
result = 0
for i in range(0, len(nums), 2): # Every interval 2 A unit of , Add a value
print('i:',i)
print('nums[i]',nums[i])
print(' primary result:', result)
result += nums[i]
print('result:', result)
return result
# Given length is 2n Array of integers for nums , Your task is to divide these numbers into n Yes , for example (a1, b1), (a2, b2), ..., (an, bn) , Make from 1 To n Of min(ai, bi) The sum is the greatest .
# Return to the Maximum sum .
# The length is 6, It can be divided into 3 Group .
# Input :nums = [1,4,3,2]
# Output :4
# explain : All possible divisions ( Ignore element order ) by :
# 1. (1, 4), (2, 3) -> min(1, 4) + min(2, 3) = 1 + 2 = 3
# 2. (1, 3), (2, 4) -> min(1, 3) + min(2, 4) = 1 + 2 = 3
# 3. (1, 2), (3, 4) -> min(1, 2) + min(3, 4) = 1 + 3 = 4
# So the maximum sum is 4
if __name__ == '__main__':
s = Solution()
nums = [6,2,6,5,1,2]
result_list = s.arrayPairSum(nums)
print('result_list:', result_list)
Output is :
After sorting nums: [1, 2, 2, 5, 6, 6]
i: 0
nums[i] 1
primary result: 0
result: 1
i: 2
nums[i] 2
primary result: 1
result: 3
i: 4
nums[i] 6
primary result: 3
result: 9
result_list: 9
Be careful : I think the code 1 appropriate , The latter is written according to the law .
边栏推荐
- PHP method of obtaining image information
- JS number is insufficient, and 0 is added
- C # Development -- pit encountered in JS intermodulation
- How to choose the appropriate automated testing tools?
- SAR影像质量评估
- How to realize the movement control of characters in horizontal game
- Vs custom template - take the custom class template as an example
- 使用 BlocConsumer 同时构建响应式组件和监听状态
- It's worth seeing. Interview sites and interview skills
- Paint basic graphics with custompaint
猜你喜欢

Use json Stringify() to realize deep copy, be careful, there may be a huge hole

It's worth seeing. Interview sites and interview skills

应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
![VTOL in Px4_ att_ Control source code analysis [supplement]](/img/7a/4ce0c939b9259faf59c52da2587693.jpg)
VTOL in Px4_ att_ Control source code analysis [supplement]

【Azure微服务 Service Fabric 】因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)

Amesim2016 and matlab2017b joint simulation environment construction
Redis官方ORM框架比RedisTemplate更优雅

Firefox browser installation impression notes clipping
![[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process](/img/80/11c2b539c217ecd6ba55668d3e71e9.png)
[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process

新版代挂网站PHP源码+去除授权/支持燃鹅代抽
随机推荐
OpenGL configure assimp
使用 BlocConsumer 同时构建响应式组件和监听状态
Redis cluster installation
SAR影像质量评估
Write in front -- Talking about program development
Welcome to CSDN markdown editor
应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
Robot autonomous exploration series papers environment code
如何实现横版游戏中角色的移动控制
How to close eslint related rules
Matplotlib quick start
Quick sort (diagram +c code)
Get the week start time and week end time of the current date
The difference between NPM uninstall and RM direct deletion
Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
PKPM 2020软件安装包下载及安装教程
苹果在iOS 16中通过'虚拟卡'安全功能进一步进军金融领域
Cataloger integrates lidar and IMU for 2D mapping
OpeGL personal notes - lights
Redis集群安装