LeetCode149、最后一块石头的重量 II

分治算法求螺丝螺母匹配问题 分治算法求螺丝螺母匹配问题 一、问题描述: 有个大小不同的螺丝和与之匹配的n个螺母, 你可以尝试一个螺丝和一个螺母是否匹配, 尝试结果有三种:(1)螺丝太大;(2)匹配成功;(3)螺母太大. 请设计一个分治算法完成所有螺丝和螺母的匹配 二、算法求解: 1、算法思路: 边界条件:当只有一个螺丝和一个螺母时,匹配螺丝和螺母。 Divide:在杯子集合中随机选择一个螺丝x, 将x与所有螺母进行匹配,把结果为螺丝太大的螺母放入G1, 把结果为螺母太大的螺母放入G2, 找到和x匹配成功的螺母记为y。将y与x以外所有杯 阅读详情
1049最后一块石头的重量 II

题目链接

https://leetcode-cn.com/problems/last-stone-weight-ii/

题目描述
有一堆石头,每块石头的重量都是正整数。

每一回合,从中选出**任意两块**石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:

如果 x == y,那么两块石头都会被完全粉碎;
如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。
最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。
示例:
输入:[2,7,4,1,8,1]
输出:1
解释:
组合 2 和 4,得到 2,所以数组转化为 [2,7,1,8,1],
组合 7 和 8,得到 1,所以数组转化为 [2,1,1,1],
组合 2 和 1,得到 1,所以数组转化为 [1,1,1],
组合 1 和 1,得到 0,所以数组转化为 [1],这就是最优值。
解题思路

本题的实质是将石头分为两堆,求怎样分才能将石头分成差值最小的两块
1、算出石头的总重量sum
2、计算出石头的一半,慢慢往下循环,每次减一,直到找到符合总数的那堆
3、进行递归计算石头的总重量,若总重量和目前需要的重量des相等,则返回true,返回结果为sum-2*des

代码实现
public class Solution {
    public int lastStoneWeightII(int[] stones) {
        int sum=0;
        for(int st:stones)
            sum+=st;
        for(int i=(sum>>1);;i--){
            if(helper(stones,0,0,i))
                return sum-2*i;
        }
    }

    boolean helper(int[] nums,int idx,int sum,int target){
        if(sum==target)
            return true;
        if(sum>target)
            return false;
        if(idx==nums.length)
            return false;
        return helper(nums,idx+1,sum+nums[idx],target)
                ||helper(nums,idx+1,sum,target);
    }
}
总结

自己太菜了

LeetCode149——直线上最多的点数 我的LeetCode代码仓:https://github.com/617076674/LeetCode 原题链接:https://leetcode-cn.com/problems/max-points-on-a-line/description/ 题目描述: 知识点:哈希表、欧几里得最大公约数算法 思路:用分数形式存储直线的斜率,切勿忘记斜率不存在的情况 (1)新建一个长度为点的数量... 阅读详情

相关推荐

2026华为OD机试(Python)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Python实现。

MISAYAONE的博客 29万+

Leetcode 1049:最后一块石头的重量 II(超详细的解法!!!)

有一堆石头,每块石头的重量都是正整数。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。 最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就...

coordinate的博客 1539

2026华为OD机试(C语言)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C语言实现。

MISAYAONE的博客 11万+

( 背包问题) 1049. 最后一块石头的重量 II ——【Leetcode每日一题】

1049. 最后一块石头的重量 II 有一堆石头,用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x

weixin_43412762的博客 1621

2026华为OD机试(JAVA&Go)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,Java实现。

MISAYAONE的博客 34万+

2026华为OD机试(JavaScript)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,JavaScript实现。

MISAYAONE的博客 8万+

LeetCode----149. 直线上最多的点数

java 代码

JustinMars的博客 487

7-1 链式基数排序 (20 分)

7-1 链式基数排序 (20 分) 实现链式基数排序,待排序关键字n满足1≤n≤1000,最大关键字数位≤5。 输入样例: 第一行输入待排序个数n(1≤n≤1000),再输入n个数(n的数位≤5)。 10 278 109 63 930 589 184 505 269 8 83 输出样例: 输出每趟分配-收集后链表中的关键字,趟数为序列中最大值的数位(如样例中930的数位为3),每行结尾有空格。 930 63 83 184 505 278 8 109 589 269 505 8 109 930 63 26

OwemShu的博客 4236

leetcode1049. 最后一块石头的重量 II(java)

来源:力扣(LeetCode)链接:https://leetcode.cn/problems/last-stone-weight-ii。

SP_1024的博客 711

UI-TARS本地部署

UI-TARS是一个用于本地部署的交互控制模型,支持桌面应用的自动化操作。部署步骤包括:首先,从官方GitHub仓库下载项目源码和模型checkpoint;其次,使用vLLM框架进行本地模型部署,启动API服务;最后,通过客户端调用API实现功能。部署过程中可能遇到pynvml模块或模型配置问题,提供了相应的解决方案。此外,还支持通过UI-TARS-Desktop客户端进行本地桌面应用的交互控制。整体流程旨在帮助用户快速实现UI-TARS的本地部署与应用。

DYF的博客 2531

怎么在豆包里做生成式引擎优化(GEO)

本文系统介绍了豆包平台生成式引擎优化(GEO)的全套方法体系。文章首先解析了豆包与传统搜索引擎的核心差异,强调其多模态理解和上下文感知特性,并指出GEO需从关键词匹配转向用户意图动态解析。随后详细阐述了GEO优化的三大核心策略:用户意图解析技术、实时内容适配框架和权威信号强化方法,配以技术实现路径和案例说明。最后提出GEO与SEO融合的未来趋势,建议企业构建统一知识库,实现全渠道声誉管理。全文包含大量实操代码和工具链指导,为企业在AI时代的内容优化提供系统解决方案。

解锁AI流量新红利!🚀 GEO优化(生成引擎优化)助您掌控AI搜索,让AI成为您的品牌最佳代言人! 2374

【LeetCode: 149. 直线上最多的点数 + 模拟遍历】

【LeetCode: 149. 直线上最多的点数 + 模拟遍历】给你一个数组 points ,其中 points[i] = [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。

Coder_ljw的博客 648

LMK04821时钟芯片SPI配置避坑指南:从寄存器读写到频率校准全流程

本文详细解析了LMK04821时钟芯片的SPI配置全流程,涵盖寄存器读写、频率校准及JESD204B系统设计中的关键技巧。通过实战案例和避坑指南,帮助工程师高效解决时钟输出异常、同步失败等常见问题,提升高速数据采集系统的时钟稳定性。

weixin_29172963的博客 159

算法沉淀——动态规划之01背包问题(leetcode真题剖析)

01背包问题是一类经典的动态规划问题,通常描述为:有一个固定容量的背包,以及一组物品,每件物品都有重量和价值,目标是找到在背包容量范围内,使得背包中的物品总价值最大的组合。

立志做一个高产且细节博主 6277

华为交换机NAC配置避坑指南:搞定打印机、摄像头等哑终端接入(含MAC旁路认证)

本文详细解析华为交换机NAC配置中的MAC旁路认证方案,特别针对打印机、摄像头等哑终端接入问题提供避坑指南。通过对比传统模式与统一模式的配置差异,结合实际案例和典型错误排查,帮助网络工程师高效解决802.1X认证环境下的哑终端接入难题。

weixin_30338497的博客 441

第5.1节 构网控制:电压源特性与电压调节

摘要: 构网型变流器的核心物理本质是作为可控交流电压源,通过戴维南等效模型(受控电势源+低输出阻抗)自主建立并调节电压,增强电网电压刚度。其电压调节通过无功-电压闭环控制实现,内环为自动电压调节器(AVR),外环为无功-电压下垂特性,模拟同步发电机功能。关键技术包括自适应增益、虚拟阻抗补偿及动态限流策略,以应对弱电网稳定性、故障过流等问题。该设计满足《规范》对电压调节范围、动态无功支撑的要求,是高比例新能源电力系统电压稳定的关键解决方案。

技术工作者 1107

Leetcode Daily

文章目录342. 4的幂1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?523. 连续的子数组和525. 连续数组160. 相交链表203. 移除链表元素[474. 一和零](https://leetcode-cn.com/problems/ones-and-zeroes/)[797. 所有可能的路径](https://leetcode-cn.com/problems/all-paths-from-source-to-target/)[494. 目标和](https://leetcode-cn.com

Ah丶Weii 316

华为od 面试八股文_数据库_01_含答案

华为od 面试八股文_数据库_01_含答案

MISAYAONE的博客 2165

LeetCode动态规划题解

动态规划基础题目背包问题打家劫舍股票问题 基础题目 背包问题 打家劫舍 股票问题

wenxingxingxing的博客 2366

基于Python的军事装备信息爬虫实战:Scrapy+Playwright+智能反反爬技术

本文将详细介绍如何使用Python构建一个高效的军事装备信息爬虫系统。我们将从基础的HTTP请求开始,逐步深入到使用Scrapy框架、Playwright浏览器自动化以及最新的反反爬技术。文章包含完整的代码实现、性能优化策略以及数据处理方案,旨在为读者提供一个全面的军事信息爬取解决方案。关键词:Python爬虫、军事装备、Scrapy、Playwright、反反爬。

2201_76125261的博客 1155

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【动态规划】深入动态规划:背包问题

动态规划--背包问题

2403_87459748的博客 1668

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

代码随想录合集

给出的数组是有序的,且要求返回目标值的下标,所以适合使用二分法。

qq_46454669的博客 1028

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode两数之和

描述 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 给定 nums = [2, 7, 11, 15], target = 9 因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1] 个人解答 cla...

IT自导的博客 247

LeetCode1049. 最后一块石头的重量 II

本文为LeetCode1049. 最后一块石头的重量 II解析,欢迎学习!

Toby的博客 817

dp背包问题——1049. 最后一块石头的重量 II

和416. 分割等和子集非常像,只需要使用石头总重量的一半作为背包容量,通过01背包的dp算法,本题其实就是尽量让石头分成重量相同的两堆,相撞之后剩下的石头最小,这样就化解成01背包问题了。本题物品的重量为stones[i],物品的价值也为stones[i],就能使得最后剩余的石头最小。

长期更新自学笔记 378

leetcode1046. 最后一块石头的重量(java)

来源:力扣(LeetCode)链接:https://leetcode.cn/problems/last-stone-weight。

SP_1024的博客 613
上一篇: LeetCode53、最大子序和
下一篇: Error creating bean with name 'sqlSessionFactory' defined in class path resource applicationContex
code_AC
博客等级 码龄12年 255粉丝 109原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值