当前位置: 首页 > news >正文

LeetCode 每日一题 2023/10/9-2023/10/15

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 10/9 2578. 最小和分割
      • 10/10 2731. 移动机器人
      • 10/11 2512. 奖励最顶尖的 K 名学生
      • 10/12 2562. 找出数组的串联值
      • 10/13 1488. 避免洪水泛滥
      • 10/14 136. 只出现一次的数字
      • 10/15 137. 只出现一次的数字 II


10/9 2578. 最小和分割

统计各个数字出现次数 从小到大排序 依次给两个数

def splitNum(num):""":type num: int:rtype: int"""s = sorted(str(num))ans = int(''.join(s[::2]))+int(''.join(s[1::2]))return ans

10/10 2731. 移动机器人

根据题意碰撞可以忽略 两机器人可以视作互相穿透
所以每个机器人可以得到最后位置为nums[i]+/-d
排序后计算两两距离

def sumDistance(nums, s, d):""":type nums: List[int]:type s: str:type d: int:rtype: int"""mod=10**9+7n=len(nums)l = [nums[i]-d if s[i]=='L' else nums[i]+d for i in range(n)]l.sort()ans = 0for i in range(1,n):ans =(ans + (l[i]-l[i-1])*i*(n-i))%modreturn ans

10/11 2512. 奖励最顶尖的 K 名学生

一个分值ma存放词汇分值
算出每个学生分数后排序

def topStudents(positive_feedback, negative_feedback, report, student_id, k):""":type positive_feedback: List[str]:type negative_feedback: List[str]:type report: List[str]:type student_id: List[int]:type k: int:rtype: List[int]"""m = {}for w in positive_feedback:m[w]=3for w in negative_feedback:m[w]=-1ans=[]for st,re in zip(student_id,report):v = 0for w in re.split():v+=m.get(w,0)ans.append((v,st))ans.sort(key=lambda x :(-x[0],x[1]))return [x[1] for x in ans[:k]]

10/12 2562. 找出数组的串联值

依次累加

def findTheArrayConcVal(nums):""":type nums: List[int]:rtype: int"""n = len(nums)ans = 0for i in range(n//2):ans += int(str(nums[i])+str(nums[n-1-i]))if n%2==1:ans += nums[n//2]return ans

10/13 1488. 避免洪水泛滥

sun记录晴天 如果遇到洪水 找晚于第一次并且早于洪水的晴天 抽干


def avoidFlood(rains):""":type rains: List[int]:rtype: List[int]"""from sortedcontainers import SortedListans = [1]*len(rains)sun = SortedList()m = {}for i,r in enumerate(rains):if r==0:sun.add(i)else:ans[i]=-1if r in m:d = sun.bisect(m[r])if len(sun)==d:return []ans[sun[d]]=rsun.discard(sun[d])m[r]=ireturn ans

10/14 136. 只出现一次的数字

两两异或 相同的数字会抵消
最后剩下来的就是只出现过一次的

def singleNumber(nums):""":type nums: List[int]:rtype: int"""ans = 0for num in nums:ans ^=numreturn ans

10/15 137. 只出现一次的数字 II

1.one,two,three分别代表出现了一次 两次 三次
位运算使得一个数在出现了三次后 被重置
2.通用方法 set去重 每个数乘3求和 减去原有和 剩下的为出现一次的数值的两倍

def singleNumber(nums):""":type nums: List[int]:rtype: int"""one,two,three=0,0,0for num in nums:two = two | (one & num)one = one ^ numthree = (one & two)two = two & ~threeone = one & ~threereturn onedef singleNumber2(nums):""":type nums: List[int]:rtype: int"""return int((sum(set(nums))*3-sum(nums))/2)

http://www.lryc.cn/news/193155.html

相关文章:

  • 相似性搜索:第 3 部分--混合倒排文件索引和产品量化
  • 小程序使用uni.createAnimation只执行一次的问题
  • win10取消ie浏览器自动跳转edge浏览器
  • 目录启示:使用 use 关键字为命名空间内的元素建立非限定名称
  • Go语言介绍与安装
  • 常用傅里叶变换表
  • 生活中的视音频技术
  • 一种用于肽图分析的烷化剂,Desthiobiotin-Iodoacetamide
  • 【(数据结构) —— 顺序表的应用-通讯录的实现】
  • macbook磁盘清理免费教程分享
  • cartographer_ros数据加载与处理
  • 设计模式-7种结构型模式
  • 华为李鹏:加速5G商业正循环,拥抱更繁荣的5.5G(5G-A)
  • Marin说PCB之CoilcraftBourns POC 电感的性能对比
  • 聊聊Maven的依赖传递、依赖管理、依赖作用域
  • centos6/7 SOCKS5 堆溢出漏洞修复(RPM方式)curl 8.4 CVE-2023-38545 CVE-2023-38546
  • C#,数值计算——数据建模Proposal的计算方法与源程序
  • 如何使用命令生成动态链接库.dll文件(保姆级教学)
  • Qt之模块介绍
  • Socks5代理和代理IP
  • 计算机指令、机器码
  • MyLife - Docker安装Consul
  • Leetcode刷题笔记--Hot61-70
  • python特别篇—github基本操作手册
  • tiktok直播websocket序列化与反序列化
  • 微信picker弹出之后 , 背景变成灰色是怎么做的
  • 通用考勤后台管理系统
  • LeetCode75——Day5
  • 面向C++模块的开源 IFC SDK
  • Docker开启远程访问+idea配置docker+dockerfile发布java项目