LeetCode 每日一题 2025/10/27-2025/11/2
记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步
目录
- 10/27 2125. 银行中的激光束数量
- 10/28 3354. 使数组元素等于零
- 10/29 3370. 仅含置位位的最小整数
- 10/30 1526. 形成目标数组的子数组最少增加次数
- 10/31 3289. 数字小镇中的捣蛋鬼
- 11/1
- 11/2
10/27 2125. 银行中的激光束数量
遍历 统计每一行激光源个数 相邻两行相乘即可
def numberOfBeams(bank):""":type bank: List[str]:rtype: int"""pre=0ans=0for l in bank:num = 0for v in list(l):if v=='1':num+=1if num>0:ans+=pre*numpre=numreturn ans
10/28 3354. 使数组元素等于零
起始位置左右两侧和需要相同
前缀和
def countValidSelections(nums):""":type nums: List[int]:rtype: int"""s=sum(nums)n=len(nums)l,r=0,sans=0for i in range(n):if nums[i]==0:if 0<=l-r<=1:ans+=1if 0<=r-l<=1:ans+=1else:l+=nums[i]r-=nums[i]return ans
10/29 3370. 仅含置位位的最小整数
2^x-1
def smallestNumber(n):""":type n: int:rtype: int"""x=1while 2**x-1<n:x+=1return 2**x-1
10/30 1526. 形成目标数组的子数组最少增加次数
遍历每一个数字
如果小于前一个则需要增加次数
如果小于前一个数字则不需要增加
def minNumberOperations(target):""":type target: List[int]:rtype: int"""ans=0pre=0for num in target:if num > pre:ans += num-prepre=numreturn ans
10/31 3289. 数字小镇中的捣蛋鬼
遍历 用map存储出现过的数字
def getSneakyNumbers(nums):""":type nums: List[int]:rtype: List[int]"""ans=[]m={}for num in nums:if num in m:ans.append(num)if len(ans)==2:return ansm[num]=1
11/1
11/2
