当前位置:网站首页>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 .
边栏推荐
- Unity technical notes (II) basic functions of scriptableobject
- Attitude estimation (complementary filtering)
- SAR影像质量评估
- ASP. Net core introduction V
- Nx10.0 installation tutorial
- How to realize the movement control of characters in horizontal game
- PHP records the pitfalls encountered in the complete docking of Tencent cloud live broadcast and im live group chat
- Blender exchange group, welcome to the water group ~
- Interview question 01.02 Determine whether it is character rearrangement - auxiliary array algorithm
- 客户案例|华律网,通过观测云大幅缩短故障定位时间
猜你喜欢

【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)

客户案例|华律网,通过观测云大幅缩短故障定位时间
Redis official ORM framework is more elegant than redistemplate

Remember aximp once Use of exe tool

Anti climbing killer

“拧巴”的早教行业:万亿市场,难出巨头

使用 BlocConsumer 同时构建响应式组件和监听状态

It's worth seeing. Interview sites and interview skills

What does it mean to prefix a string with F?

Crawler (17) - Interview (2) | crawler interview question bank
随机推荐
php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑
Matplotlib快速入门
Matplotlib quick start
Record layoutrebuild Forcerebuildlayoutimmediate does not take effect
Px4 autonomous flight
Yarn cannot view the historical task log of yarn after enabling ACL user authentication. Solution
[problem] pytorch installation
Visual design form QT designer design gui single form program
[azure microservice service fabric] how to transfer seed nodes in the service fabric cluster
This experimental syntax requires enabling the parser plugin: ‘optionalChaining‘
C # realizes the communication between Modbus protocol and PLC
Kaggle-Titanic
数字化转型:五个步骤推动企业进步
PHP method of obtaining image information
Revit secondary development - wall opening
客户案例|华律网,通过观测云大幅缩短故障定位时间
Aspose. Word operation word document (I)
Nx10.0 installation tutorial
php 获取图片信息的方法
Use json Stringify() to realize deep copy, be careful, there may be a huge hole