高级编程技术 课后作业十三(第8周第2次)
生活随笔
收集整理的這篇文章主要介紹了
高级编程技术 课后作业十三(第8周第2次)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#18 【4Sum】 tag:array
題目大意:給定一個數組和一個目標數,找出數組的四個數使其和與目標數最接近,返回所有可能的四個數。
解題思路:排序后暴力循環,步驟如下。
(1)數組排序。
(2)設i,j,k,l分別對應數組四個數的下標,固定i=0,設result空列表代表結果。
(3)固定j=i+1。
(4)設sum4 = nums[i]+nums[j]+nums[k]+nums[l]。
(5)如果sum4等于target,并且[nums[i],nums[j],nums[k],nums[l]]不在result列表里,插入之。
(6)判斷sum4與target的大小,sum4小則往后遞增k,sum4大則往前遞減l,當k不再小于l時,將j固定為j+1,重復步驟4,直
到j等于len(nums)-2。
(7)固定i=i+1,重復步驟3,直到i等于len(nums)-3。
(8)返回result,函數退出。
class Solution:def fourSum(self, nums, target):nums.sort()result = []for i in range(len(nums)-3):for j in range(i+1,len(nums)-2):k,l = j+1,len(nums)-1while k < l:sum4 = nums[i]+nums[j]+nums[k]+nums[l]if sum4 == target and [nums[i],nums[j],nums[k],nums[l]] not in result:result.append([nums[i],nums[j],nums[k],nums[l]])if sum4 < target:k += 1else:l -= 1return result
總結
以上是生活随笔為你收集整理的高级编程技术 课后作业十三(第8周第2次)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 这7款APP到底有什么好,值得知乎2万人
- 下一篇: GPU中的SM和warp的关系