首页 > 其他分享 >lc1755 最接近目标值的子序列和

lc1755 最接近目标值的子序列和

时间:2024-03-14 20:22:51浏览次数:21  
标签:goal nums int dfs 序列 st2 ans 目标值 lc1755

给你一个整数数组nums和一个目标值goal,需要从nums中选出一个子序列,使子序列元素总和最接近goal,返回abs(sum-goal)可能的最小值。数组的子序列指通过移除原数组中的某些元素(可能全部或无)而形成的数组。
1<=nums.length<=40; -1e7<=nums[i]<=1e7; -1e9<=goal<=1e9

值域过大,不能用背包求,而直接dfs时间复杂度为O(2^40),会TLE,考虑双向dfs,然后凑答案,时间复杂度为O(2*2^20)

class Solution {
public:
    int minAbsDifference(vector<int>& nums, int goal) {
        int n = nums.size();
        set<int> st1, st2;
        
        auto dfs = [&](auto self, int x, int R, int cur, set<int> &st) -> void {
            if (x == R) {
                st.insert(cur);
                return;
            }
            self(self, x+1, R, cur, st);
            self(self, x+1, R, cur+nums[x], st);
        };
        
        dfs(dfs, 0, n/2, 0, st1);
        dfs(dfs, n/2, n, 0, st2);
        int ans = INT_MAX;
        for (auto i : st1) {
            auto it = st2.lower_bound(goal-i);
            if (it != st2.end()) {
                ans = min(ans, abs(i + *it - goal));
            }
            if (it != st2.begin()) {
                --it;
                ans = min(ans, abs(i + *it - goal));
            }
        }
        return ans;
    }
};

标签:goal,nums,int,dfs,序列,st2,ans,目标值,lc1755
From: https://www.cnblogs.com/chenfy27/p/18073861

相关文章

  • PHP反序列化总结
    0x01.前言本文首发于先知:https://xz.aliyun.com/t/12507。花些时间把四种常见的php反序列化总结了一遍,各自都找了简单示例和例题,参考了一些师傅的链接加上自己的理解,参考链接放在文末0x02.反序列化是什么说到反序列化,经常会想到serialize(),unserialize()这两个函数。我看到......
  • 一维时间序列的离散正交Stockwell变换和离散余弦Stockwell变换
    MATLAB环境下一维时间序列信号的离散正交Stockwell变换和离散余弦Stockwell变换。Stockwell变换是一种对短时傅立叶变换STFT和小波变换WT扩展的时频分析方法。Stockwell变换将傅里叶变换的绝对相位保持特性与WT的频率相关分析和多分辨率特性结合起来。离散正交Stockwell变换......
  • Python自学☞序列和索引的相关操作
    一、基本概念1、概念序列是一个用于存储多个值的连续空间,每个值都对应一个整数的编号,称为索引2、切片的语法结构注:切片可以访问序列一定范围内的元素序列[start:end:step]    start-->切片的开始索引(包含)    end-->切片的结束索引(不包含)  step-->步长(默......
  • 有效括号序列
    题目描述给出一个仅包含字符’(’,’)’,’{’,’}’,’[‘和’]’,的字符串,判断给出的字符串是否是合法的括号序列,括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。数据范围:字符串长度0≤n≤10000要求:空间复杂度O(n),时间复杂度O(n)......
  • [Dubbo] Dubbo 反序列化将Pair转化成HashMap的问题
    问题描述Dubbo在3.2.x版本中,类检查级别默认是STRICT3.1版本中默认为WARN告警级别,3.2版本中默认为STRICT严格检查级别。不配置的情况下,会将名单以外的类型转化成Map。如何支持Pair的序列化和反序列化dubbo.application.serialize-check-status=WARN新建允许的名......
  • Rust解析JSON,结构体序列化和反序列化
    Rust参考教程:HereJSON一种常用的由键值对组成的数据对象;本文将通过多个例子讲解在Rust中如何解析JSON内容,以及如何将结构体转换成JSON字符串。在Rust中解析JSON文本通常需要使用一个JSON库。Rust标准库中有一个名为serde的库,它提供了序列化和反序列化结构体和其他数据类型的......
  • Serializer 序列化 -----视图层传入一个变量到序列化器的方法
    fromrest_frameworkimportserializersclassMyModelSerializer(serializers.ModelSerializer):classMeta:model=MyModelfields=['field1','field2']defto_representation(self,instance):......
  • 【Web】浅聊XStream反序列化本源之恶意动态代理注入
    目录简介原理复现具体分析之前我们反序列化了个什么?XStream反序列化的朴素通识具体分析第一步:unmarshal解组第二步:readClassType获取动态代理类的Class对象第三步:调用convertAnother对动态代理类进行实例化第四步:调用动态代理类方法触发invoke前文:【Java】萌新的......
  • 复现反序列化
    1、复现shiro的反序列化漏洞,实现反弹shell2、演示渗透测试和打点的手段,说明二者的区别一个指定了资产范围,一个从公司名开始收集3、描述hw蓝方有哪些组,工作内容有什么监测组:看态势感知,waf,写日报判断告警是否为真实告警研判组:处置组:根据真实告警,防火墙封禁攻击IP溯源组:尝试......
  • R语言【paleoTS】——compareModels:比较模型适合于古生物学时间序列
    Package paleoTS version0.5.3Description获取模型拟合函数的输出,并将模型拟合信息(对数似然、AICc等)编译成一个方便的表。UsagecompareModels(...,silent=FALSE,sort=FALSE)Arguments参数【...】:任意数量的模型拟合(as.paletsfit)对象。参数【silent】......