LeetCode(2023-11-10)


2905. 找出满足差值条件的下标 II

2905. 找出满足差值条件的下标 II

class Solution:
    def findIndices(self, nums, indexDifference: int, valueDifference: int) -> List[int]:
        for i in range(len(nums)):
            nums[i] = (nums[i], i)
        nums.sort(key=lambda x: x[0])

        for i in range(len(nums) - 1, -1, -1):
            if abs(nums[i][0] - nums[0][0]) < valueDifference:
                return [-1, -1]
            for j in range(0, i + 1):
                if abs(nums[i][0] - nums[j][0]) < valueDifference:
                    break
                if abs(nums[i][1] - nums[j][1]) >= indexDifference:
                    return [nums[i][1], nums[j][1]]
        return [-1, -1]

1507. 转变日期格式

1507. 转变日期格式

class Solution:
    def reformatDate(self, date: str) -> str:
        map = {"Jan": "1", "Feb": "2", "Mar":"3", "Apr": "4", "May": "5",
               "Jun": "6", "Jul": "7", "Aug": "8", "Sep": "9", "Oct": "10", "Nov": "11", "Dec": "12"}
        date = date.split(' ')
        date.reverse()
        date[2] = date[2][:-2].rjust(2, '0')
        date[1] = map[date[1]].rjust(2, '0')
        return '-'.join(date)

LCR 002. 二进制求和

LCR 002. 二进制求和

class Solution:
    def addBinary(self, a: str, b: str) -> str:
        return bin(int(a, 2) + int(b, 2))[2:]

面试题 16.15. 珠玑妙算

面试题 16.15. 珠玑妙算

from collections import Counter


class Solution:
    def masterMind(self, solution: str, guess: str) -> List[int]:
        s = Counter(solution)
        g = Counter(guess)
        ans = [0, 0]
        for i in range(len(solution)):
            if solution[i] == guess[i]:
                ans[0] += 1
                s[solution[i]] -= 1
                if s[solution[i]] == 0:
                    s.pop(solution[i])
                g[guess[i]] -= 1
                if g[guess[i]] == 0:
                    g.pop(guess[i])

        for item in s.keys() & g.keys():
            ans[1] += min(s[item], g[item])
        return ans

373. 查找和最小的 K 对数字

373. 查找和最小的 K 对数字

import heapq


class Solution:
    def kSmallestPairs(self, nums1: List[int], nums2: List[int], k: int) -> List[List[int]]:
        queue = [(nums1[i] + nums2[0], i, 0) for i in range(len(nums1))]
        ans = []
        while queue and len(ans) < k:
            _, i, j = heapq.heappop(queue)
            ans.append([nums1[i], nums2[j]])
            if j + 1 < len(nums2):
                heapq.heappush(queue, (nums1[i] + nums2[j + 1], i, j + 1))
        return ans

2611. 老鼠和奶酪

2611. 老鼠和奶酪

class Solution:
    def miceAndCheese(self, reward1: List[int], reward2: List[int], k: int) -> int:
        reward = [(reward1[i] - reward2[i], i) for i in range(len(reward1))]
        ans = 0
        reward.sort(key=lambda x: x[0])
        for i in range(len(reward)):
            _, index = reward[i]
            if i < len(reward) - k:
                ans += reward2[index]
            else:
                ans += reward1[index]
        return ans

声明:Hello World|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - LeetCode(2023-11-10)


我的朋友,理论是灰色的,而生活之树是常青的!