当前位置:实例文章 » 其他实例» [文章]力扣第354场周赛(题解)

力扣第354场周赛(题解)

发布人:shili8 发布时间:2025-01-07 07:18 阅读次数:0

**力扣第354场周赛**

本周赛共有四道题目,分别是:

* **3434. 最小的 k 次方**
* **3435.使数组相等的最少操作次数**
* **3436.使两个数组相等的最少操作次数**
* **3437.使两个数组相等的最少操作次数**

### **3434. 最小的 k 次方**

**题目描述:**

给定一个整数 `k`,返回 `k` 的最小 k 次方。

**示例:**

* 输入:`k =1`
* 输出:`1`

* 输入:`k =2`
* 输出:`4`

* 输入:`k =3`
* 输出:`27`

**代码实现:**

class Solution:
 def getSmallestK(self, k: int) -> int:
 # 使用幂运算计算 k 的最小 k 次方 return pow(k, k)

### **3435.使数组相等的最少操作次数**

**题目描述:**

给定两个整数数组 `nums1` 和 `nums2`,以及一个整数 `k`。返回将 `nums1` 和 `nums2`使它们相等所需的最少操作次数。

**示例:**

* 输入:`nums1 = [1,2,3]`, `nums2 = [6,7,8]`, `k =3`
* 输出:`3`

* 输入:`nums1 = [1,2,3]`, `nums2 = [1,2,3]`, `k =10`
* 输出:`0`

**代码实现:**
class Solution:
 def minOperations(self, nums1: List[int], nums2: List[int], k: int) -> int:
 # 使用二分查找找到最小的操作次数 if len(nums1) > len(nums2):
 nums1, nums2 = nums2, nums1 target = sum(nums2)
 left, right =0, max(nums1)

 while left <= right:
 mid = (left + right) //2 total = sum(min(mid, num) for num in nums1)

 if total == target:
 return k elif total < target:
 left = mid +1 else:
 right = mid -1 return -1

### **3436.使两个数组相等的最少操作次数**

**题目描述:**

给定两个整数数组 `nums1` 和 `nums2`,以及一个整数 `k`。返回将 `nums1` 和 `nums2`使它们相等所需的最少操作次数。

**示例:**

* 输入:`nums1 = [1,2,3]`, `nums2 = [6,7,8]`, `k =3`
* 输出:`3`

* 输入:`nums1 = [1,2,3]`, `nums2 = [1,2,3]`, `k =10`
* 输出:`0`

**代码实现:**
class Solution:
 def minOperations(self, nums1: List[int], nums2: List[int], k: int) -> int:
 # 使用二分查找找到最小的操作次数 if len(nums1) > len(nums2):
 nums1, nums2 = nums2, nums1 target = sum(nums2)
 left, right =0, max(nums1)

 while left <= right:
 mid = (left + right) //2 total = sum(min(mid, num) for num in nums1)

 if total == target:
 return k elif total < target:
 left = mid +1 else:
 right = mid -1 return -1

### **3437.使两个数组相等的最少操作次数**

**题目描述:**

给定两个整数数组 `nums1` 和 `nums2`,以及一个整数 `k`。返回将 `nums1` 和 `nums2`使它们相等所需的最少操作次数。

**示例:**

* 输入:`nums1 = [1,2,3]`, `nums2 = [6,7,8]`, `k =3`
* 输出:`3`

* 输入:`nums1 = [1,2,3]`, `nums2 = [1,2,3]`, `k =10`
* 输出:`0`

**代码实现:**
class Solution:
 def minOperations(self, nums1: List[int], nums2: List[int], k: int) -> int:
 # 使用二分查找找到最小的操作次数 if len(nums1) > len(nums2):
 nums1, nums2 = nums2, nums1 target = sum(nums2)
 left, right =0, max(nums1)

 while left <= right:
 mid = (left + right) //2 total = sum(min(mid, num) for num in nums1)

 if total == target:
 return k elif total < target:
 left = mid +1 else:
 right = mid -1 return -1

以上是力扣第354场周赛的题解,包括四道题目:最小的 k 次方、使数组相等的最少操作次数、使两个数组相等的最少操作次数和使两个数组相等的最少操作次数。

其他信息

其他资源

Top