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

LeetCode 每日一题 2023/12/18-2023/12/24

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


目录

      • 12/18 162. 寻找峰值
      • 12/19 1901. 寻找峰值 II
      • 12/20 2828. 判别首字母缩略词
      • 12/21 2866. 美丽塔 II
      • 12/22 1671. 得到山形数组的最少删除次数
      • 12/23 1962. 移除石子使总数最小
      • 12/24 1954. 收集足够苹果的最小花园周长


12/18 162. 寻找峰值

二分
因为边界为负无穷
只要往高坡移动 必定能找到峰值

def findPeakElement(nums):""":type nums: List[int]:rtype: int"""l,r = 0,len(nums)-1while l<r:mid = l+((r-l)>>1)if nums[mid]<nums[mid+1]:l = mid+1else:r = midreturn l

12/19 1901. 寻找峰值 II

按每一行来二分 对于某一行i来说 取其中最大值mat[i][j]
判断该最大值与上下相邻值的关系
如果都大于邻值 说明该位置为峰顶
如果存在大的邻值 说明该方向存在峰顶

def findPeakGrid(mat):""":type mat: List[List[int]]:rtype: List[int]"""l,r = 0,len(mat)-2while l<=r:mid = (l+r)>>1mx = max(mat[mid])j = mat[mid].index(mx)if mx>mat[mid+1][j]:r = mid-1else:l = mid+1i = lreturn [i,mat[i].index(max(mat[i]))]

12/20 2828. 判别首字母缩略词

依次判断

def isAcronym(words, s):""":type words: List[str]:type s: str:rtype: bool"""n = len(words)if n!=len(s):return Falsefor i in range(n):if words[i][0]!=s[i]:return Falsereturn True

12/21 2866. 美丽塔 II

以i为山顶
计算0~i能够得到的最大和left[i]
计算i~n能够得到的最大和right[i]
left[i]+right[i+1]就是最大和
单调栈来统计

def maximumSumOfHeights(maxHeights):""":type maxHeights: List[int]:rtype: int"""n=len(maxHeights)right = [0]*(n+1)st = [n]s = 0for i in range(n-1,-1,-1):v = maxHeights[i]while len(st)>1 and v<=maxHeights[st[-1]]:j = st.pop()s -= maxHeights[j]*(st[-1]-j)s+=v*(st[-1]-i)right[i]=sst.append(i)ans = sst=[-1]l = 0for i,v in enumerate(maxHeights):while len(st)>1 and v<=maxHeights[st[-1]]:j = st.pop()l -= maxHeights[j]*(j-st[-1])l+=v*(i-st[-1])ans = max(ans,l+right[i+1])st.append(i)return ans

12/22 1671. 得到山形数组的最少删除次数

左侧到山顶是递增 山顶到右侧是递减
只考虑一边 即求递增子序列
另一边倒序后 同样求递增子序列

def minimumMountainRemovals(nums):""":type nums: List[int]:rtype: int"""n = len(nums)def getLIS(nums):dp=[1]*nfor i in range(n):for j in range(i):if nums[j]<nums[i]:dp[i] = max(dp[i],dp[j]+1)return dpleft = getLIS(nums)right = getLIS(nums[::-1])[::-1]ans = 0for i,j in zip(left,right):if i>1 and j>1:ans = max(ans,i+j-1)return n-ans

12/23 1962. 移除石子使总数最小

大顶堆 每次取最大一堆石子进行操作

def minStoneSum(piles, k):""":type piles: List[int]:type k: int:rtype: int"""import heapqs = sum(piles)l = [-x for x in piles]heapq.heapify(l)while k>0:v = -heapq.heappop(l)s -= v//2v -= v//2heapq.heappush(l,-v)k-=1return s

12/24 1954. 收集足够苹果的最小花园周长

找规律 可以划分为四块数量相同的区域
对于边长2n的正方形
一份区域内元素和n
(n+1)(2n+1)/2
所以总和为2n(n+1)
(2n+1)

def minimumPerimeter(neededApples):""":type neededApples: int:rtype: int"""n = int((neededApples/4)**(1/3))if 2*n*(n+1)*(2*n+1)<neededApples:n+=1return 8*n

相关文章:

  • python 使用 pip 安装第三方库 导入不成功
  • 【算法设计与分析】——动态规划算法
  • 【docker笔记】docker常用命令
  • 磁盘类型选择对阿里云RDS MySQL的性能影响
  • 硬核实战!mysql 错误操作整个表全部数据后如何恢复?附解决过程、思路(百万行SQL,通过binlog日志恢复)
  • 线段树/区间树(java实现版详解附leetcode例题)
  • MySQL——复合查询
  • 蓝桥杯宝藏排序算法(冒泡、选择、插入)
  • 幺模矩阵-线性规划的整数解特性
  • 使用vue-qr,报错in ./node_modules/vue-qr/dist/vue-qr.js
  • Openwrt AP 发射 WiFi 信号
  • 【Android 13】使用Android Studio调试系统应用之Settings移植(一):编译服务器的配置、AOSP源码的下载、编译、运行
  • SpringMVC之文件的下载
  • 【数据结构入门精讲 | 第十篇】考研408排序算法专项练习(二)
  • 体验一下 CodeGPT 插件
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • 2017 年终总结 —— 在路上
  • CEF与代理
  • Linux Process Manage
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 笨办法学C 练习34:动态数组
  • 编写高质量JavaScript代码之并发
  • 对话 CTO〡听神策数据 CTO 曹犟描绘数据分析行业的无限可能
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 利用jquery编写加法运算验证码
  • 猫头鹰的深夜翻译:JDK9 NotNullOrElse方法
  • 每天10道Java面试题,跟我走,offer有!
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #stm32整理(一)flash读写
  • #鸿蒙生态创新中心#揭幕仪式在深圳湾科技生态园举行
  • (笔试题)合法字符串
  • (第27天)Oracle 数据泵转换分区表
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (接口封装)
  • (论文阅读30/100)Convolutional Pose Machines
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (三)Hyperledger Fabric 1.1安装部署-chaincode测试
  • (三)mysql_MYSQL(三)
  • (转)编辑寄语:因为爱心,所以美丽
  • .net framework4与其client profile版本的区别
  • .Net IOC框架入门之一 Unity
  • .NET 将混合了多个不同平台(Windows Mac Linux)的文件 目录的路径格式化成同一个平台下的路径
  • .NET开发人员必知的八个网站
  • .NET性能优化(文摘)
  • @Autowired多个相同类型bean装配问题
  • @EventListener注解使用说明
  • @private @protected @public
  • @RequestBody详解:用于获取请求体中的Json格式参数
  • @RequestMapping用法详解
  • @Transactional 详解