当前位置:网站首页>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 .
边栏推荐
- Cannot find module 'xxx' or its corresponding type declaration
- Remember aximp once Use of exe tool
- Oracle advanced (VI) Oracle expdp/impdp details
- Cataloger integrates lidar and IMU for 2D mapping
- 「开源摘星计划」Loki实现Harbor日志的高效管理
- Typeorm automatically generates entity classes
- Two methods of calling WCF service by C #
- The strongest installation of the twin tower model, Google is playing "antique" again?
- Revit secondary development - get the thickness / length / height of the beam
- 使用 CustomPaint 绘制基本图形
猜你喜欢
Use blocconsumer to build responsive components and monitor status at the same time
Pdf document signature Guide
[advanced MySQL] index details (I): index data page structure
UWA问答精选
Use json Stringify() to realize deep copy, be careful, there may be a huge hole
Robot autonomous exploration DSVP: code parsing
Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
PDF文档签名指南
UWA Q & a collection
Anti climbing killer
随机推荐
Debezium系列之:mysql墓碑事件
100million single men and women "online dating", supporting 13billion IPOs
Unity local coordinates and world coordinates
Unity development --- the mouse controls the camera to move, rotate and zoom
Revit secondary development - operation family documents
This experimental syntax requires enabling the parser plugin: ‘optionalChaining‘
“拧巴”的早教行业:万亿市场,难出巨头
Use partial derivatives to display normals in unity
Redis集群安装
Revit secondary development - project file to family file
Paint basic graphics with custompaint
php 记录完整对接腾讯云直播以及im直播群聊 所遇到的坑
Matplotlib快速入门
The essence of analog Servlet
OpeGL personal notes - lights
Get the week start time and week end time of the current date
vite Unrestricted file system access to
全面掌控!打造智慧城市建设的“领导驾驶舱”
Overseas agent recommendation
Kaggle-Titanic