From 705a82cf84115875010a7de9585c11f5d7ad33bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A7=A6=E8=8B=B1=E6=9D=B0?= <327782001@qq.com> Date: Wed, 5 Jul 2023 21:03:44 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E4=B8=89=E6=95=B0=E4=B9=8B=E5=92=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../day04/problem_solving_01.py" | 29 +++++++++++++++ .../day04/problem_solving_02_01.py" | 22 ++++++++++++ .../day04/problem_solving_02_02.py" | 14 ++++++++ .../day04/problem_solving_03.py" | 36 +++++++++++++++++++ 4 files changed, 101 insertions(+) create mode 100644 "01-\346\225\260\347\273\204/day04/problem_solving_01.py" create mode 100644 "01-\346\225\260\347\273\204/day04/problem_solving_02_01.py" create mode 100644 "01-\346\225\260\347\273\204/day04/problem_solving_02_02.py" create mode 100644 "01-\346\225\260\347\273\204/day04/problem_solving_03.py" diff --git "a/01-\346\225\260\347\273\204/day04/problem_solving_01.py" "b/01-\346\225\260\347\273\204/day04/problem_solving_01.py" new file mode 100644 index 0000000..7dce723 --- /dev/null +++ "b/01-\346\225\260\347\273\204/day04/problem_solving_01.py" @@ -0,0 +1,29 @@ +""" +盛最多水的容器 +""" +from typing import List + + +class Solution: + def maxArea(self, height: List[int]) -> int: + """ + 双指针 + :param height: + :return: + """ + max_area = 0 + left = 0 + right = len(height) - 1 + while left < right: + area = (right - left) * min(height[left], height[right]) + max_area = max(max_area, area) + if height[left] < height[right]: + left += 1 + else: + right -= 1 + return max_area + + +if __name__ == '__main__': + result = Solution().maxArea([1, 8, 6, 2, 5, 4, 8, 3, 7]) + print(result) diff --git "a/01-\346\225\260\347\273\204/day04/problem_solving_02_01.py" "b/01-\346\225\260\347\273\204/day04/problem_solving_02_01.py" new file mode 100644 index 0000000..94059dc --- /dev/null +++ "b/01-\346\225\260\347\273\204/day04/problem_solving_02_01.py" @@ -0,0 +1,22 @@ +""" +K 件物品的最大和 +""" +from typing import List + + +class Solution: + def kItemsWithMaximumSum(self, numOnes: int, numZeros: int, numNegOnes: int, k: int) -> int: + if k <= numOnes: + return k + elif numOnes < k <= (numOnes + numZeros): + return numOnes + elif (numOnes + numZeros) < k <= (numOnes + numZeros + numNegOnes): + return numOnes - (k - numOnes - numZeros) + else: + return numOnes - numNegOnes + return result + + +if __name__ == '__main__': + result = Solution().kItemsWithMaximumSum(3, 2, 0, 2) + print(result) diff --git "a/01-\346\225\260\347\273\204/day04/problem_solving_02_02.py" "b/01-\346\225\260\347\273\204/day04/problem_solving_02_02.py" new file mode 100644 index 0000000..42a7ea9 --- /dev/null +++ "b/01-\346\225\260\347\273\204/day04/problem_solving_02_02.py" @@ -0,0 +1,14 @@ +""" +K 件物品的最大和 +""" +from typing import List + + +class Solution: + def kItemsWithMaximumSum(self, numOnes: int, numZeros: int, numNegOnes: int, k: int) -> int: + return numOnes - (k - numOnes + numZeros) if k > (numOnes + numZeros) else min(numOnes, k) + + +if __name__ == '__main__': + result = Solution().kItemsWithMaximumSum(3, 2, 0, 2) + print(result) diff --git "a/01-\346\225\260\347\273\204/day04/problem_solving_03.py" "b/01-\346\225\260\347\273\204/day04/problem_solving_03.py" new file mode 100644 index 0000000..3c458bb --- /dev/null +++ "b/01-\346\225\260\347\273\204/day04/problem_solving_03.py" @@ -0,0 +1,36 @@ +""" +三数之和 +""" +from typing import List + + +class Solution: + def threeSum(self, nums: List[int]) -> List[List[int]]: + nums.sort() + res = [] + for i in range(len(nums) - 2): + if nums[i] > 0: + break + if i > 0 and nums[i] == nums[i - 1]: + continue + left, right = i + 1, len(nums) - 1 + while left < right: + total = nums[i] + nums[left] + nums[right] + if total < 0: + left += 1 + elif total > 0: + right -= 1 + else: + res.append([nums[i], nums[left], nums[right]]) + while left < right and nums[left] == nums[left + 1]: + left += 1 + while left < right and nums[right] == nums[right - 1]: + right -= 1 + left += 1 + right -= 1 + return res + + +if __name__ == '__main__': + result = Solution().threeSum([-1, 0, 1, 2, -1, -4]) + print(result) -- GitLab