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


目录

      • 8/4 904. 水果成篮
      • 8/5 3477. 水果成篮 II
      • 8/6 3479. 水果成篮 III
      • 8/7 3363. 最多可收集的水果数目
      • 8/8 808. 分汤
      • 8/9 231. 2 的幂
      • 8/10 869. 重新排序得到 2 的幂


8/4 904. 水果成篮

滑动窗口l,r 记录当前水果
如果超过两种则滑动l 减少至两种

def totalFruit(fruits):""":type fruits: List[int]:rtype: int"""m = {}ans = 0l = 0for r,v in enumerate(fruits):m[v] = m.get(v,0)+1if len(m)>2:m[fruits[l]]-=1if m[fruits[l]] == 0:m.pop(fruits[l])l+=1ans = max(ans,r-l+1)return ans

8/5 3477. 水果成篮 II

遍历每一个水果

def numOfUnplacedFruits(fruits, baskets):""":type fruits: List[int]:type baskets: List[int]:rtype: int"""ans=0n=len(baskets)for f in fruits:cur=1for i in range(n):if f<=baskets[i]:baskets[i]=0cur=0breakans+=curreturn ans

8/6 3479. 水果成篮 III

线段树二分
对于水果i 在线段树上二分找到第一个容量大于等于它的篮子

def numOfUnplacedFruits(fruits, baskets):""":type fruits: List[int]:type baskets: List[int]:rtype: int"""class Tree:def __init__(self,a):n=len(a)self.max=[0]*(2<<(n-1).bit_length())self.build(a,1,0,n-1)def maintain(self,o):self.max[o]=max(self.max[o*2],self.max[o*2+1])def build(self,a,o,l,r):if l==r:self.max[o]=a[l]return mid=(l+r)//2self.build(a, o*2, l, mid)self.build(a, o*2+1, mid+1, r)self.maintain(o)def find(self,o,l,r,x):if self.max[o]<x:return -1if l==r:self.max[o]=-1return lmid=(l+r)//2i = self.find(o*2,l,mid,x)if i<0:i=self.find(o*2+1, mid+1, r, x)self.maintain(o)return itr=Tree(baskets)n=len(baskets)ans=0for x in fruits:if tr.find(1, 0, n-1, x)<0:ans+=1return ans

8/7 3363. 最多可收集的水果数目

左上角的小朋友只能走对角线到达
为了使得收集水果最多 不走重复路线
右上角小朋友不穿过对角线 只在右上走
同理 左下小朋友只在左下走
dfs 只需要一个小朋友走好了 另一个反转后一样

def maxCollectedFruits(fruits):""":type fruits: List[List[int]]:rtype: int"""n=len(fruits)mem={}ans = sum(fruits[i][i] for i in range(n))def dfs(i,j):if (i,j) in mem:return mem[(i,j)]if not(n-1-i<=j<n):return float("-inf")if i==0:return fruits[i][j]ans = max(dfs(i-1,j-1),dfs(i-1,j),dfs(i-1,j+1))+fruits[i][j]mem[(i,j)]=ansreturn ansans+=dfs(n-2,n-1)mem={}fruits=list(zip(*fruits))ans+=dfs(n-2,n-1)return ans

8/8 808. 分汤

可以将25ml看作1份 四种情况分别为
A 4 B 0
A 3 B 1
A 2 B 2
A 1 B 3
开始时 A,B拥有的份数一样
当n过大时 A被取完的概率接近于1 误差小于10^-5
假设dp[i][j] 为A剩余i份 B剩余j份时 需要求的概率
dp[i][j] = (dp[i-4][j]+dp[i-3][j-1]+dp[i-2][j-2]+dp[i-1][j-3])/4
当j=0,i>0时 dp[i][j] = 0
当i=0,j>0时 dp[i][j] = 1
当i=0,j=0时 dp[i][j] = 0.5

def soupServings(n):""":type n: int:rtype: float"""n = (n+24)//25if n>=179:return 1dp = [[0]*(n+1) for _ in range(n+1)]dp[0] = [0.5]+[1.0]*nfor i in range(1,n+1):for j in range(1,n+1):dp[i][j] = (dp[max(0, i - 4)][j] + dp[max(0, i - 3)][max(0, j - 1)] +dp[max(0, i - 2)][max(0, j - 2)] + dp[max(0, i - 1)][max(0, j - 3)])/4return dp[n][n]

8/9 231. 2 的幂

排除负数
转换为二进制 如果是2的幂 必定只有第一位为1 其它为0
2.
去除最低位1的方法 n与n-1相与
如果只有1个1 那么n&(n-1)==0
不为零说明不止一个1

def isPowerOfTwo(n):""":type n: int:rtype: bool"""if n<=0:return Falses = bin(n)[2:]return True if s.count('1')==1 else Falsedef isPowerOfTwo2(n):""":type n: int:rtype: bool"""if n<=0:return Falsereturn n&(n-1)==0

8/10 869. 重新排序得到 2 的幂

n<109 所以2的幂最多229
找到所有2的幂的数字组合
匹配

def reorderedPowerOf2(n):""":type n: int:rtype: bool"""base = 1s = set()l = list(str(base))l.sort()s.add("".join(l))for i in range(29):base *=2l = list(str(base))l.sort()s.add("".join(l))check = list(str(n))check.sort()return "".join(check) in s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/918315.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/918315.shtml
英文地址,请注明出处:http://en.pswp.cn/news/918315.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫实战:研究Ruia框架,构建博客园文章采集系统

1. 引言 1.1 研究背景与意义 在数字化时代,数据已成为驱动科技创新与产业升级的核心生产要素。互联网作为全球最大的信息载体,蕴含着亿级结构化、半结构化与非结构化数据,这些数据在商业决策、学术研究、公共服务等领域具有不可替代的价值。网络爬虫技术作为自动获取网络公…

Office安装使用?借助Ohook开源工具?【图文详解】微软Office产品

一、问题背景 很多用户在使用 Office 软件一段时间后&#xff0c;会遇到以下问题。 二、解决方案 Ohook 是 Office 独有的可用方式&#xff0c;源自 GitHub 上的开源项目&#xff0c;代码开源&#xff08;开源地址&#xff1a;https://github.com/asdcorp/ohook&#xff09;。 …

LeetCode简单题 - 学习

力扣题库 - 简单题 - 仅记录学习 来源地址&#xff1a; 力扣 (LeetCode) 全球极客挚爱的技术成长平台 1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你…

Android Camera 打开和拍照APK源码

完整下载路径: 【免费】AndroidcameraAPK完整源码(包括打开摄像头和拍照保存功能)Android10验证可完整运行资源-CSDN下载 效果: 源码: package com.example.mycamera;import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appco…

【系统分析师】软件需求工程——第11章学习笔记(上)

软件需求工程是包括创建和维护软件需求文档所必需的一切活动的过程。可分为两大工作&#xff1a;需求开发需求获取需求分析需求定义&#xff08;编写需求规格说明书&#xff09;需求验证需求管理定义需求基线处理需求变更需求跟踪在需求开发阶段需要确定软件所期望的用户类型&a…

机器学习第七课之支持向量机SVM

目录 简介&#xff1a; 一、什么是支持向量机 二、如何选取最佳的超平面 1.超平面方程 (优化目标) 2.如何寻找最优的超平面 3.举例分析 4.软间隔​编辑 三、核函数 1举例 2常用核函数 3.多项式核函数 4.高斯核函数: 四、svm的优缺点 五、支持向量机的API 六、案例…

P3232 [HNOI2013] 游走,solution

原题&#xff1a; link&#xff0c;点击这里喵。 题意&#xff1a; 给定一个 nnn 个点 mmm 条边的无向连通图&#xff0c;图无重边和自环&#xff0c;顶点从 111 编号到 nnn&#xff0c;边从 111 编号到 mmm。 小 Z 在该图上进行随机游走&#xff0c;初始时小 Z 在 111 号顶…

Docker容器部署discuz论坛与线上商城

准备 关闭防火墙&#xff0c;上下文[rootdocker ~]# systemctl disable --now firewalld[rootdocker ~]# setenforce 0下载应用yum remove runc -y ### rocky8才需要yum install -y yum-utils yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/cento…

Linux入门指南:26个基础命令全解析

目录 一.基础概念与入门 1.Linux操作系统简介 2.终端与shell的基本概念 3.命令行界面的优势 二.基础指令 1.whoami ​2.useradd/userdel/passwd ​3.pwd ​4.ls ​5.cd 6.touch 7.mkdir 8.tree 9.rmdir/rm 10.man 11.cp 12.mv 13.cat 14.le…

【后端】Java 8 特性 `User::getId` 语法(方法引用)介绍

文章目录核心概念解析&#xff1a;方法引用的四种类型&#xff1a;关键特性&#xff1a;使用场景推荐&#xff1a;何时避免使用&#xff1a;性能说明&#xff1a;在 Java 中&#xff0c; User::getId 是一种称为 方法引用&#xff08;Method Reference&#xff09; 的语法糖&a…

基于BP与CNN的图像分类模型构建、超参数优化及性能对比研究​

一、实验目的实验目标构建基于神经网络模型的数据分析与模式识别框架&#xff0c;探明神经网络在大数据分析中的意义。实验任务构建基于深度 BP 神经网络与卷积神经网络的数据分析与模式识别框架&#xff0c;将数据集 MNIST 与 CIFAR-10 分别在两种模型中训练&#xff0c;并比较…

HarmonyOS应用开发-低代码开发登录页面(超详细)

本篇文章我来手把手教大家做一个HarmonyOS 应用的登录页面&#xff0c;逐步讲解&#xff0c;非常细致&#xff0c;百分百能学会&#xff0c;并提供全部源码。页面使用 DevEco Studio 的低代码开发。 通过本文的实践经验&#xff0c;我想告诉大家&#xff0c; HarmonyOS 应用开发…

AJAX与axios框架

文章目录前言案例跨域访问总结❗前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 通过 ajax 进行前后端交互 案例 此项目用到了javaweb知识 首先创建JavaWeb项目编写代码&#xff1a; package ajax;import java.io.IOException; import java.util.Arr…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册&#xff1a;算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳目录《医学统计学从入门到…

Python设计模式 - 装饰模式

定义 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;用于在不修改原有类的情况下动态地扩展对象的功能。 结构抽象组件&#xff08;Component&#xff09;&#xff1a;定义对象的公共接口&#xff0c;使得客户端能以一致的方式处理未被装…

MySQL(188)如何使用MySQL的慢查询工具?

使用MySQL的慢查询工具可以帮助开发者识别和优化性能不佳的SQL查询。以下是详细深入的步骤和代码示例&#xff0c;帮助你使用MySQL的慢查询工具来进行查询分析和优化。 一、启用慢查询日志 首先&#xff0c;你需要确保MySQL的慢查询日志功能是启用的。慢查询日志记录了所有执行…

如何培养自己工程化的能力(python项目)

培养 Python 项目的工程化能力需要系统性训练&#xff0c;以下从基础到高阶的实践路径&#xff0c;结合具体案例和工具链&#xff0c;帮助你逐步进阶&#xff1a;一、夯实工程化基础能力​1. 规范代码与项目结构•​项目模板化​使用 cookiecutter生成标准项目结构&#xff0c;…

AI编程插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功能特性、性能表现、集成性、用户…

uniapp/uniappx实现图片或视频文件选择时同步告知权限申请目的解决华为等应用市场上架审核问题

在UNIAPP支持vue和nvue,在UNIAPPX支持uvue&#xff0c;安卓支持在选择图片或视频文件权限申请的时候自动同步告知权限申请目的。轻松解决在华为应用市场审核&#xff0c;要求告知权限申请目的或说明的问题。 UNIAPP相册图片视频选择器(安卓可以自定义界面样式)功能介绍&#x…

jupyter notebook如何打开其他盘目录

问题描述Jupyter Notebook 相信是我们学习 Python 避不开的一个工具。当我们使用 pip install notebook 安装 Notebook 之后&#xff0c;使用命令 jupyter notebook 启动服务&#xff0c;启动之后默认会在浏览器打开界面。我们会发现&#xff0c;这个界面默认在 C 盘下&#xf…