《分苹果问题:从暴力模拟到二分优化的一步步思考》
一、题目背景 有 n 个孩子和 m 个苹果,每个孩子至少分一个,且相邻两个孩子的苹果数差值不能超过 1,求在满足条件的前提下,小明(第 k 个孩子)最多可以分到多少苹果? 二、思路分析 相邻两个孩子的苹果数量不能大于一而且小明需要尽可能的多分,所以最后肯定是一个以小明为峰顶的一个“山峰”形状。 所以问题的关键就是我们假设小明分到了 x 个苹果,然后根据小明的位置分别计算出左右两边需要的苹果数量,并判断数量是否足够,如果足够的话就将加 x 加一然后继续判断,直到 m 个苹果不够分为止。 三、关键实现逻辑 关键在于苹果数量的计算,现在我们假设分给了小明 x 个苹果,然后小明的位置在 k,他左边有 k-1 个人,右边有 n-k 个人,现在以从左边开始举例子(应为右边的计算方式也是一样)。 这里要分两种情况讨论一下: 1、x - 1 >= k - 1 这种情况下我们可以简单的计算苹果的数量,就是一个等差数列,将首项加上未项乘以项数除以 2 即可得到结果。 2、x - 1 < k -...
LeetCode416.分割等和子集【中等】
相关标签: 数组、动态规划 题目简介: 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例: 示例 1: 输入:nums = [1,5,11,5]输出:true解释:数组可以分割成 [1, 5, 5] 和 [11] 。 示例 2: 输入:nums = [1,2,3,5]输出:false解释:数组不能分割成两个元素和相等的子集。 提示: 1 <= nums.length <= 200 1 <= nums[i] <= 100 解题思路: 题目要求我们分割等和子集,那首先想到的就是排除和为奇数的情况,当和为偶数时才有讨论的必要。我们现在的目标就变成了判断能否从数组中找出一些元素凑成总和的一半。 诶,这个描述是不是有一点耳熟,我换一个说法你就明白了,给你一个背包,让你判断能否将背包装满。所以这道题本质上就是背包问题,而且是 01 背包问题(不允许重复)。 唯一需要注意的一点就是这里的 dp 数组需要定义成 boolean...
LeetCode368.最大整除子集【中等】
相关标签: 数组、动态规划 题目简介: 给你一个由 无重复 正整数组成的集合 nums ,请你找出并返回其中最大的整除子集 answer ,子集中每一元素对 (answer[i], answer[j]) 都应当满足: answer[i] % answer[j] == 0 ,或 answer[j] % answer[i] == 0 如果存在多个有效解子集,返回其中任何一个均可。 示例: 示例 1: 输入:nums = [1,2,3]输出:[1,2]解释:[1,3] 也会被视为正确答案。 示例 2: 输入:nums = [1,2,4,8]输出:[1,2,4,8] 提示: 1 <= nums.length <= 1000 1 <= nums[i] <= 2 * 109 nums 中的所有整数 互不相同 解题思路: 这道题其实一开始我还是想的是先求出所有子集,然后对于每个子集去判断是否能够满足相互整除的要求。但是看了一下 nums 数组的长度好吧这个做法肯定会超内存限制。 然后我想到提前剪枝先去判断 nums...
LeetCode1863-找出所有子集的异或和再求和【简单】
相关标签: 位运算、数组、回溯 题目简介: 一个数组的 异或总和 定义为数组中所有元素按位 XOR 的结果;如果数组为 空 ,则异或总和为 0 。 例如,数组 [2,5,6] 的 异或总和 为 2 XOR 5 XOR 6 = 1 。 给你一个数组 nums ,请你求出 nums 中每个 子集 的 异或总和 ,计算并返回这些值相加之 和 。 注意:在本题中,元素 相同 的不同子集应 多次 计数。 数组 a 是数组 b 的一个 子集 的前提条件是:从 b 删除几个(也可能不删除)元素能够得到 a 。 示例: 示例 1: 输入:nums = [1,3]输出:6解释:[1,3] 共有 4 个子集:- 空子集的异或总和是 0 。- [1] 的异或总和为 1 。- [3] 的异或总和为 3 。- [1,3] 的异或总和为 1 XOR 3 = 2 。0 + 1 + 3 + 2 = 6 示例 2: 输入:nums = [5,1,6]输出:28解释:[5,1,6] 共有 8 个子集:- 空子集的异或总和是 0 。- [5] 的异或总和为 5 。- [1] 的异或总和为 1 。- [6]...
基于Hexo框架和Butterfly主题搭建个人博客网站
一、前言 个人博客无疑是很多开发者、技术爱好者记录技术经验、分享生活和展示个人作品的一个重要平台。作为一名开发者,搭建一个属于自己的博客网站不仅是一个展示自我的窗口,还能帮助自己总结学习成果,提升技术水平。 在这篇博客中,我将带你一起走过基于 Hexo 框架搭建个人博客的全过程,同时介绍如何使用 Butterfly 主题来美化博客,使其更加符合个人风格。 下面展示一下我的个人博客网站: 二、Hexo 框架简介2.1、什么是 Hexo? Hexo 是一个快速、简洁且高效的博客框架。 Hexo 使用 Markdown(或其他标记语言)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。 Hexo 2.2、安装 在安装 Hexo 之前需要先安装好 Git 和 Node.js: Git 和 Node.js 的安装过程这里就不过多赘述了,下面进行 hexo 的安装: hexo 的安装也非常简单,在终端运行以下代码: $ npm install -g hexo-cli 安装 Hexo 完成后,请执行下列命令,Hexo 将会在指定文件夹中新建所需要的文件。 $...
Spring Boot + Vue 前后端分离项目上线实记
一、前言 本文记录了一个前后端分离项目的完整部署流程。许多同学在本地开发完项目后,缺乏将其部署到远程服务器的实战经验。因此,我将以一个实际项目为例,详细展示从环境准备到最终上线的全过程,希望对你有所帮助! 二、服务器环境准备2.1、配置服务器 首先准备一个服务器,我这里用的是阿里云 : 第一次购买一般都会有优惠,而且对于一般的单体项目而言 2 核 2G 的配置也够用了,当然也有 3 个月的试用版本。 完成之后进入控制台第一件事就是去你左侧边栏的安全组里面开放端口,这样才能从远程访问。 端口范围根据需求开放,一般是 3306 mysql、80 nginx 代理、13103 这里是宝塔面板的端口,什么是宝塔面板后面会讲到,下面 3 个端口是默认初始化好的。 然后进入实例面板重新设置一下你的服务器密码: 修改完成之后就可以试着连接你的服务器了,我这里使用的是...
SpringCloud 微服务入门:服务调用流程解析
目录 1、引言 2、微服务基础概念 2.1、框架总览 2.2、微服务与单体架构的对比 3、微服务的最大特点:服务之间的调用 3.1、服务注册 3.1.1、注册中心原理 3.1.2、Nacos 注册中心 3.1.3、服务注册 3.2、服务间通信方式 3.2.1、OpenFeign 3.2.2、RabbitMQ 3.2.3、SpringAMQP 3.3、负载均衡 3.3.1、源码跟踪 3.3.2、NacosRule 3.4、 服务容错机制 3.4.1、服务保护方案 3.4.2、Sentinel 3.4.3、请求限流 3.4.4、线程隔离 3.4.5、服务熔断 3.5、分布式事务 3.5.1、Seata 3.5.2、XA 模式 3.5.3、AT...
Linux(Centos7)安装docker、mysql踩坑总结
本文主要是记录了在 CentOS 7 上安装 Docker 和 MySQL 时遇到的一些问题,主要是由于镜像源未配置正确,导致无法顺利下载所需的依赖包。下面将介绍在安装过程中遇到的困难,并分享如何通过配置合适的镜像源来解决这些问题,从而顺利完成 Docker 和 MySQL 的安装,希望能够帮到有需要的人。 一、安装准备 系统版本:CentOS 7 先安装 yum: yum install -y yum-utils device-mapper-persistent-data lvm2 执行之前先配置一下镜像源,输入以下命令进入配置文件: vim /etc/yum.repos.d/CentOS-Base.repo 再将 mirrorlist 注释掉然后将 baseurl 改为阿里云镜像,然后保存退出 一定要将 mirrorlist 注释掉!不然还是会直接访问官方源导致下载失败! 输入下面的命令检验是否安装成功: 当然不排除网络问题,可以先用 ping 命令测试一下网络是否连通: 只要网络连通,并且配置文件修改无误就肯定能安装成功。 二、安装...
用Python与Fiddler实现图书馆座位自动预约:实战经验分享
前言: 期末周图书馆座位总是供不应求,每天早上七点开始预约,不到十分钟位置就被抢光。对于我们这些爱睡懒觉的人来说,简直是噩梦!而恰好这学期我正在学习计算机网络课程,何不趁机动手写一个自动预约程序,解决这个问题呢?于是这篇博客应运而生。 免责声明: 本博客仅供计算机网络爱好者学习交流使用,请勿用于非法用途! 目录 一、需求分析 二、开发工具准备 三、功能实现 一、需求分析 我们的目标很明确,那就是使用自动化脚本实现图书馆座位的预约。我所在的学校由于只能通过微信公众号来进行预约,所以相较于能够直接在网站上预约的学校来说,数据抓包相对复杂一点,所以才会用到 fidder,不然直接浏览器 F12 就可以直接看数据包了。 让我们来分析一下要干些什么事情: 使用电脑登陆微信,进入公众号模拟预约 使用 fidder 对刚才的操作进行抓包 对数据包经行分析,提取出对应的用户登录数据以及座位预约信息 使用 Python 的 requests 库模拟用户向图书馆服务器发送预约请求 编辑定时器固定在早上 7...
基于若依框架的SpringBoot管理系统学习
前言 在现代企业开发中,快速搭建高效、稳定的管理系统是一个常见的需求。而若依框架作为一个基于 SpringBoot 的开源管理系统框架,凭借其模块化设计、便捷的代码生成工具以及优秀的前端整合方案,成为了许多开发者的首选。对于初学者来说,若依框架不仅是学习 SpringBoot 开发的良好切入点,也是深入理解后台管理系统开发流程的最佳实践平台。 本文将结合学习若依框架的实际过程,从框架搭建到核心功能实现,对其中的重要知识点和开发技巧进行深入解析,帮助读者快速上手并掌握若依框架的使用技巧,同时为开发自己的管理系统打下坚实的基础。 一、什么是若依?1.概述 若依框架(RuoYi)是一个基于 SpringBoot 和 Vue 的快速开发平台,常用于构建后台管理系统。它采用前后端分离的架构,前端使用 Vue.js,后端使用 SpringBoot,数据库则支持多种类型(如 MySQL、MariaDB 等)。框架集成了一些主流的开源组件,如 MyBatis、Redis、Druid、Swagger 等,使得开发人员能够快速搭建和扩展项目功能。 gitee 地址: 后端...