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

LeetCode 每日一题 2024/1/8-2024/1/14

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


目录

      • 1/8 447. 回旋镖的数量
      • 1/9 2707. 字符串中的额外字符
      • 1/10 2696. 删除子串后的字符串最小长度
      • 1/11 2645. 构造有效字符串的最少插入数
      • 1/12 2085. 统计出现过一次的公共字符串
      • 1/13 2182. 构造限制重复的字符串
      • 1/14 83. 删除排序链表中的重复元素


1/8 447. 回旋镖的数量

matrix[i][j] 记录点i 点j之间的距离
遍历每一个点 相同距离的点个数
计算

def numberOfBoomerangs(points):""":type points: List[List[int]]:rtype: int"""def dist(x,y):return (y[1]-x[1])**2+(y[0]-x[0])**2n = len(points)matrix = [[0]*n for _ in range(n)]for i in range(n):for j in range(n):matrix[i][j] = dist(points[i],points[j])from collections import defaultdictans = 0for i in range(n):m = defaultdict(int)for j in range(n):m[matrix[i][j]]+=1for k,v in m.items():if v>1:ans += v*(v-1)return ans

1/9 2707. 字符串中的额外字符

dp[i]表示s[:i]额外字符个数
首先将s[i]认为是额外字符 初始化dp[i]=dp[i-1]+1
再判断s[j:i]是否在字典中 如果在 则dp[i]=min(dp[j],dp[i])
map用来判断字符串是否在字典中

def minExtraChar(s, dictionary):""":type s: str:type dictionary: List[str]:rtype: int"""n=len(s)dp = [float("inf")]*(n+1)dp[0]=0m = {}for d in dictionary:m[d] =1for i in range(1,n+1):dp[i] = dp[i-1]+1for j in range(i-1,-1,-1):if s[j:i] in m:dp[i] = min(dp[j],dp[i])return dp[n]

1/10 2696. 删除子串后的字符串最小长度

栈 将字母放入栈中 判断栈顶两个字符

def minLength(s):""":type s: str:rtype: int"""st = []for c in s:st.append(c)if len(st)>=2 and (''.join(st[-2:])=="AB" or ''.join(st[-2:])=="CD"):st.pop()st.pop()return len(st)

1/11 2645. 构造有效字符串的最少插入数

从头遍历 记录当前状态

def addMinimum(word):""":type word: str:rtype: int"""cur = ""ans = 0for w in word:if w=="a":if cur=="a":ans+=2elif cur=="b":ans+=1cur = welif w=="b":if cur=="":ans +=1elif cur=="b":ans+=2cur = welse:if cur=="a":ans+=1elif cur=="":ans+=2cur=""if cur=="a":ans+=2elif cur=="b":ans+=1return ans

1/12 2085. 统计出现过一次的公共字符串

map统计字符串出现次数

def countWords(words1, words2):""":type words1: List[str]:type words2: List[str]:rtype: int"""ans = 0m1,m2={},{}for w in words1:m1[w]=m1.get(w,0)+1for w in words2:m2[w]=m2.get(w,0)+1for k,v in m1.items():if v!=1:continueif m2.get(k,0)==1:ans+=1return ans

1/13 2182. 构造限制重复的字符串

选择字典序最高的字符加入 如果超过次数
则加一个次高的字符然后继续换成最大字符加入

def repeatLimitedString(s, repeatLimit):""":type s: str:type repeatLimit: int:rtype: str"""cnt = [0]*26for c in s:cnt[ord(c)-ord('a')]+=1ret=[]i,j,cur = 25,24,0while i>=0 and j>=0:if cnt[i]==0:i-=1cur=0elif cur<repeatLimit:cnt[i]-=1cur+=1ret.append(chr(ord('a')+i))elif j>=i or cnt[j]==0:j-=1else:cnt[j]-=1cur=0ret.append(chr(ord('a')+j))return ''.join(ret)

1/14 83. 删除排序链表中的重复元素

已排序 从头到尾判断
如果相同跳过

class ListNode(object):def __init__(self, val=0, next=None):self.val = valself.next = next
def deleteDuplicates(head):""":type head: ListNode:rtype: ListNode"""top = ListNode(0)pre = topcur = headwhile cur:while cur.next and cur.val==cur.next.val:cur = cur.nextpre.next = curpre = curcur = cur.nextreturn top.next

相关文章:

  • 使用scipy处理图片——滤镜处理
  • Rust 错误处理(上)
  • 爬虫之Cookie获取:利用浏览器模拟一个cookie出来、面对反爬虫、加密的cookie的应对方法
  • 如何在CentOS 7 中搭建Python 3.0 环境
  • 项目管理十大知识领域之项目整体管理
  • 车载音频EMI的产生及典型音频功放AW836XX的解决方案
  • C#使用Stopwatch实现执行耗时及性能监测
  • JavaScript类型检测【全】
  • 20240116-唯一出现次数
  • Java后端学习路线
  • ssh -T git@github.com Connection timed out 解决方案-自测有效
  • 【征稿进行中|见刊快速】2024年社会发展与艺术鉴赏国际学术会议(IACSDAA 2024)
  • uniapp如何实现跨端适配
  • vite+vue3创建项目及开发常见的问题
  • 【数据结构和算法】反转链表
  • hexo+github搭建个人博客
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【347天】每日项目总结系列085(2018.01.18)
  • JAVA并发编程--1.基础概念
  • Java小白进阶笔记(3)-初级面向对象
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • scala基础语法(二)
  • ViewService——一种保证客户端与服务端同步的方法
  • VuePress 静态网站生成
  • 工作手记之html2canvas使用概述
  • 机器学习中为什么要做归一化normalization
  • 基于Mobx的多页面小程序的全局共享状态管理实践
  • 基于游标的分页接口实现
  • 马上搞懂 GeoJSON
  • 前嗅ForeSpider采集配置界面介绍
  • 使用putty远程连接linux
  • 在Docker Swarm上部署Apache Storm:第1部分
  • ​比特币大跌的 2 个原因
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • #NOIP 2014# day.2 T2 寻找道路
  • (k8s中)docker netty OOM问题记录
  • (Python) SOAP Web Service (HTTP POST)
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)基于ssm的模具配件账单管理系统 毕业设计 081848
  • (算法)Travel Information Center
  • (转)负载均衡,回话保持,cookie
  • .htaccess配置常用技巧
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET 设计一套高性能的弱事件机制
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .NET8.0 AOT 经验分享 FreeSql/FreeRedis/FreeScheduler 均已通过测试
  • .NET国产化改造探索(三)、银河麒麟安装.NET 8环境
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .sh 的运行
  • @Documented注解的作用
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法