当前位置:网站首页>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 .
边栏推荐
- Revit secondary development - operation family documents
- [open source] Net ORM accessing Firebird database
- 【Azure微服务 Service Fabric 】在SF节点中开启Performance Monitor及设置抓取进程的方式
- Revit secondary development - get the thickness / length / height of the beam
- Use blocconsumer to build responsive components and monitor status at the same time
- Revit secondary development - collision detection
- Matplotlib quick start
- Nx10.0 installation tutorial
- 新版代挂网站PHP源码+去除授权/支持燃鹅代抽
- The strongest installation of the twin tower model, Google is playing "antique" again?
猜你喜欢
UWA问答精选
反爬通杀神器
The PHP source code of the new website + remove authorization / support burning goose instead of pumping
[advanced MySQL] index details (I): index data page structure
如何实现横版游戏中角色的移动控制
The whole network "chases" Zhong Xuegao
Nx10.0 installation tutorial
【Azure微服务 Service Fabric 】如何转移Service Fabric集群中的种子节点(Seed Node)
Quick sort (diagram +c code)
null == undefined
随机推荐
戴森官方直营店免费造型服务现已开放预约 先锋科技诠释护发造型理念,助力消费者解锁多元闪耀造型
Loki, the "open source star picking program", realizes the efficient management of harbor logs
Common verification rules of form components -2 (continuously updating ~)
Anti climbing killer
Cataloger integrates lidar and IMU for 2D mapping
Xcode modifies the default background image of launchscreen and still displays the original image
JS number is insufficient, and 0 is added
Px4 autonomous flight
Revit secondary development - operation family documents
全面掌控!打造智慧城市建设的“领导驾驶舱”
PDF文档签名指南
Revit secondary development - get the thickness / length / height of the beam
Matplotlib quick start
Variables and constants
Ni9185 and ni9234 hardware settings in Ni Max
Form组件常用校验规则-2(持续更新中~)
PHP records the pitfalls encountered in the complete docking of Tencent cloud live broadcast and im live group chat
Interview question 01.02 Determine whether it is character rearrangement - auxiliary array algorithm
SAR影像质量评估
Nx10.0 installation tutorial