当前位置:网站首页>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 .
边栏推荐
- Robot autonomous exploration series papers environment code
- UWA Q & a collection
- Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department
- 应用实践 | 数仓体系效率全面提升!同程数科基于 Apache Doris 的数据仓库建设
- Paint basic graphics with custompaint
- PKPM 2020软件安装包下载及安装教程
- null == undefined
- Xcode modifies the default background image of launchscreen and still displays the original image
- The free styling service of Dyson's official direct store is now open for appointment. Pioneer Technology interprets the styling concept of hair care and helps consumers unlock diversified and shiny s
- Debezium系列之:源码阅读之SnapshotReader
猜你喜欢
[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process
Remember aximp once Use of exe tool
How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
使用 BlocConsumer 同时构建响应式组件和监听状态
Gazebo import the mapping model created by blender
Redis cluster installation
VTOL in Px4_ att_ Control source code analysis [supplement]
[advanced MySQL] index details (I): index data page structure
Remember an experience of using selectmany
[environment] pycharm sets the tool to convert QRC into py file
随机推荐
Unity development --- the mouse controls the camera to move, rotate and zoom
Apple further entered the financial sector through the 'virtual card' security function in IOS 16
How to realize the movement control of characters in horizontal game
【Azure微服务 Service Fabric 】因证书过期导致Service Fabric集群挂掉(升级无法完成,节点不可用)
Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold
[problem] pytorch installation
客户案例|华律网,通过观测云大幅缩短故障定位时间
“拧巴”的早教行业:万亿市场,难出巨头
Add get disabled for RC form
How to choose the appropriate automated testing tools?
How pyGame rotates pictures
数字化转型:五个步骤推动企业进步
Unity technical notes (II) basic functions of scriptableobject
OpenGL homework - Hello, triangle
Remember that a development is encountered in the pit of origin string sorting
Nx10.0 installation tutorial
Redis official ORM framework is more elegant than redistemplate
Robot autonomous exploration series papers environment code
Debezium系列之:源码阅读之BinlogReader
Px4 autonomous flight