当前位置:网站首页>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 .
边栏推荐
- 苹果在iOS 16中通过'虚拟卡'安全功能进一步进军金融领域
- Write in front -- Talking about program development
- What is the difference between the three values of null Nan undefined in JS
- 使用 BlocConsumer 同时构建响应式组件和监听状态
- IP network active evaluation system -- x-vision
- Microservice Remote debug, nocalhost + rainbond microservice Development second Bomb
- Reinforcement learning - learning notes 9 | multi step TD target
- Cataloger integrates lidar and IMU for 2D mapping
- Gazebo import the mapping model created by blender
- Revit secondary development - shielding warning prompt window
猜你喜欢

What does it mean to prefix a string with F?

海外代理推荐

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

UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xf9 in position 56: illegal multibyte sequence

Pre sale 179000, hengchi 5 can fire? Product power online depends on how it is sold

Redis集群安装

Robot autonomous exploration series papers environment code

Unity FAQ (I) lack of references

The whole network "chases" Zhong Xuegao

如何选择合适的自动化测试工具?
随机推荐
How to quickly check whether the opening area ratio of steel mesh conforms to ipc7525
UWA Q & a collection
Revit secondary development - project file to family file
数字化转型:五个步骤推动企业进步
ASP.NET Core入门五
怎样写一个增广矩阵到txt文件中
PKPM 2020软件安装包下载及安装教程
Application practice | the efficiency of the data warehouse system has been comprehensively improved! Data warehouse construction based on Apache Doris in Tongcheng digital Department
Record problems fgui tween animation will be inexplicably killed
Dayu200 experience officer MPPT photovoltaic power generation project dayu200, hi3861, Huawei cloud iotda
Microservice Remote debug, nocalhost + rainbond microservice Development second Bomb
如何实现横版游戏中角色的移动控制
OpenGL job coordinate system
How to judge whether the input content is "number"
[azure microservice service fabric] start the performance monitor in the SF node and set the method of capturing the process
“拧巴”的早教行业:万亿市场,难出巨头
php 获取图片信息的方法
UWA问答精选
Use blocconsumer to build responsive components and monitor status at the same time
100million single men and women "online dating", supporting 13billion IPOs