LeetCode 1498. 满足条件的子序列数目(排序+二分查找+快速幂)

1. 题目

给你一个整数数组 nums 和一个整数 target 。

请你统计并返回 nums 中能满足其最小元素与最大元素的 小于或等于 target 的 非空 子序列的数目。

由于答案可能很大,请将结果对 10^9 + 7 取余后返回。

示例 1:
输入:nums = [3,5,6,7], target = 9
输出:4
解释:有 4 个子序列满足该条件。
[3] -> 最小元素 + 最大元素 <= target (3 + 3 <= 9)
[3,5] -> (3 + 5 <= 9)
[3,5,6] -> (3 + 6 <= 9)
[3,6] -> (3 + 6 <= 9)示例 2:
输入:nums = [3,3,6,8], target = 10
输出:6
解释:有 6 个子序列满足该条件。(nums 中可以有重复数字)
[3] , [3] , [3,3], [3,6] , [3,6] , [3,3,6]示例 3:
输入:nums = [2,3,3,4,6,7], target = 12
输出:61
解释:共有 63 个非空子序列,其中 2 个不满足条件([6,7], [7])
有效序列总数为(63 - 2 = 61)示例 4:
输入:nums = [5,2,4,1,7,6,8], target = 16
输出:127
解释:所有非空子序列都满足条件 (2^7 - 1) = 127提示:
1 <= nums.length <= 10^5
1 <= nums[i] <= 10^6
1 <= target <= 10^6

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-subsequences-that-satisfy-the-given-sum-condition
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 排序
  • 遍历左端点 i ,二分查找小于等于 target-nums[i]的最后一个数 j
  • 包含左端点 i 的满足条件的子序列个数为:2j−i2^{j-i}2ji
  • 然后 j−ij-iji 很大时,用快速幂求取,过程中取模,避免溢出
class Solution {	//C++int mod = 1e9+7;
public:int numSubseq(vector<int>& nums, int target) {sort(nums.begin(),nums.end());int i = 0, j;unsigned long long count = 0;for(i = 0; i < nums.size(); ++i){if(nums[i] > target/2+1)break;j = bs(nums,target-nums[i]);if(j != -1 && j >= i)count = (count+mypow(j-i))%mod;}return count;}int bs(vector<int>& a, int t){int i = 0, j = a.size()-1, mid;while(i <=j){mid = (i+j)/2;if(a[mid] > t)j = mid-1;else{if(mid==a.size()-1 || a[mid+1] > t)return mid;elsei = mid+1;}}return -1;}int mypow(int n){long long s = 1, p = 2;while(n){if(n&1)s *= p, s %= mod;p *= p;p %= mod;n /= 2;}return s;}
};

452 ms 48 MB

python3 解答

class Solution:# py3def numSubseq(self, nums: List[int], target: int) -> int:mod = int(1e9+7)nums.sort()def bs(t):i,j = 0, len(nums)-1while i <= j:mid = (i+j)>>1if nums[mid] > t:j = mid-1else:if mid==len(nums)-1 or nums[mid+1] > t:return midelse:i = mid+1return -1def mypow(n):s, p = 1, 2while n:if n&1:s *= ps %= modp *= pp %= modn //= 2return scount = 0for i in range(len(nums)):if nums[i] > target//2+1:break;j = bs(target-nums[i])if j != -1 and j >= i:count = (count + mypow(j-i))%modreturn count

1528 ms 23.7 MB

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

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

相关文章

Matlab编程学习笔记【待续】

最近想用Matlab进行数据分析&#xff0c;算法性能测试&#xff0c;平时由于用的是C、C&#xff0c;因此很多习惯都一时改不了&#xff0c;这里自己列出来一些Matlab中明显不同的地方。 矩阵单元元素访问方式&#xff1a;A(1,2)---A[1][2]选取矩阵某个行或者列&#xff1a;A(:,1…

Hive的视图

创建视图 create view my_view as select * from student; 注意&#xff1a; hive中的视图仅仅是存储了SQL语句的快捷方式&#xff0c;在查询的时候才执行&#xff1b;hive中的视图只有逻辑视图&#xff0c;没有物化视图&#xff1b;hive中的视图只支持查询&#xff0c;不支…

animation 先执行一次 在持续执行_这一次,彻底弄懂 JavaScript 执行机制

本文来源&#xff1a;ssssyokihttps://juejin.im/post/6844903512845860872不论你是javascript新手还是老鸟&#xff0c;不论是面试求职&#xff0c;还是日常开发工作&#xff0c;我们经常会遇到这样的情况&#xff1a;给定的几行代码&#xff0c;我们需要知道其输出内容和顺序…

[scikit-learn 机器学习] 5. 多元线性回归

文章目录1. 多元线性回归2. 多项式回归3. 正则化4. 线性回归应用举例&#xff08;酒质量预测&#xff09;4.1 数据预览4.2 模型验证5. 梯度下降法本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记1. 多元线性回归 模型 yαβ1x1β2x2...βnxny \alpha\bet…

mac笔记本修改 mysql 的密码

第一种 mysql版本&#xff1a;5.7.17 1.首先我们要关闭mysql服务 sudo /usr/local/mysql/support-files/mysql.server stop 2.我们要用安全模式启动mysql sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables 3.使用root账号登录mysql服务 /usr/local/mysql/bin/mysql …

LeetCode 831. 隐藏个人信息

1. 题目 给你一条个人信息字符串 S&#xff0c;它可能是一个 邮箱地址 &#xff0c;也可能是一串 电话号码 。 我们将隐藏它的隐私信息&#xff0c;通过如下规则: 电子邮箱 定义名称 name 是长度大于等于 2 &#xff08;length ≥ 2&#xff09;&#xff0c;并且只包含小写…

oa项目经验描述_简历中项目经验模版

项目名称&#xff1a;OA(办公自动化)开发工具&#xff1a;MyEclipse 8.6 , Oracle 11g , Tomcat 6.0.18项目描述(1, SSH框架版)&#xff1a;OA主要功能模块分为首页Portlet展示、协同审批、协同工作、日历、资源管理、知识中心、新闻中心、通讯录、系统管理。是一套很好的办公自…

分离

web2.0到处都是分离与聚合的思想&#xff1a; jquery实现了表现层的行为与内容的分离 zendframework为首的mvc架构实现了逻辑架构的控制、模块、表现层的分离 mysql为例的master-slave架构实现了服务与备份的分离 hadoop为首的虚拟化架构实现了单点计算与群体计算的结合 css实现…

hive-内置函数(常用内置函数汇总)

show functions; #查看所有内置函数&#xff0c;共271个 show function sum; #查看sum函数的描述信息 show function extended sum; #查看内置函数的描述信息和举例的使用方法 举例数据表&#xff1a;stu id name address score credit 01 huang hebi,changzhou,dalian …

LeetCode 828. 统计子串中的唯一字符(中心扩展)

1. 题目 我们定义了一个函数 countUniqueChars(s) 来统计字符串 s 中的唯一字符&#xff0c;并返回唯一字符的个数。 例如&#xff1a;s “LEETCODE” &#xff0c;则其中 “L”, “T”,“C”,“O”,“D” 都是唯一字符&#xff0c;因为它们只出现一次&#xff0c;所以 coun…

钢笔的保养

钢笔其实很泼辣的不需要用心的保养&#xff0c;但如果太不注意了&#xff0c;也会早早损毁了一支好笔。所以&#xff0c;为了自己方便地更长久些&#xff0c;还是要保养一下。保养的方法很简单&#xff0c;就是&#xff1a; 用前先浸&#xff0c;墨水不混&#xff0c;定期清洗。…

hive - 自定义函数(超详细步骤,手把手的交)

用Java开发自定义函数&#xff0c;步骤&#xff1a; 1.eclipse上新建一个工程project&#xff08;db2019)&#xff1b; 2.导jar依赖包&#xff1a; db2019右键 --build path --configure... --add library --user library --new(新建一个library(hive2.3.2_jar)) --add ext…

LeetCode 1053. 交换一次的先前排列

1. 题目 给你一个正整数的数组 A&#xff08;其中的元素不一定完全不同&#xff09;&#xff0c;请你返回可在 一次交换&#xff08;交换两数字 A[i] 和 A[j] 的位置&#xff09;后得到的、按字典序排列小于 A 的 最大可能排列。 如果无法这么操作&#xff0c;就请返回原数组…

bootstrap 树形表格渲染慢_layUI之树状表格异步加载组件treetableAsync.js(基于treetable.js)...

概述后台框架中使用树状表格是非常常用的操作&#xff0c;layUI本身并没有这种组件。 第三方的treetable.js做到了完美的实现&#xff0c;但是不能实现在双击时异步加载数据&#xff0c;本文就是站在了巨人的肩膀上实现的异步加载的树状表格~1. 使用说明本组件基于treetable.js…

EchoServer

using System;using System.Net.Sockets;using System.IO;using System.Net; namespace ConsoleApplication1{ class EchoServer { public static void Main11() { // TcpListener监听端口1234 IPAddress ipAd IPAddress.Parse(&qu…

hive - 解析 json

内置函数&#xff1a;get_json_object(json串,解析路径) 解析路径说明&#xff1a; $ :跟对象 . :子对象 [] :数组下标 * :所有 举例&#xff1a; 数据样例&#xff1a; {"movie":"1190","rate":"4.8","timestamp":…

[scikit-learn 机器学习] 6. 逻辑回归

文章目录1. 逻辑回归二分类2. 垃圾邮件过滤2.1 性能指标2.2 准确率2.3 精准率、召回率2.4 F1值2.5 ROC、AUC3. 网格搜索调参4. 多类别分类5. 多标签分类5.1 多标签分类性能指标本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记逻辑回归常用于分类任务 1. 逻…

libsvm回归参数寻优cgp_【lightgbm/xgboost/nn代码整理二】xgboost做二分类,多分类以及回归任务...

1.简介该部分是代码整理的第二部分&#xff0c;为了方便一些初学者调试代码&#xff0c;作者已将该部分代码打包成一个工程文件&#xff0c;包含简单的数据处理、xgboost配置、五折交叉训练和模型特征重要性打印四个部分。数据处理部分参考&#xff1a;代码整理一&#xff0c;这…

hive - 可优化的 10 个地方及详解

1.合理选择排序 排序算法比较耗资源&#xff0c;应根据业务需要选择 order by :全局排序&#xff0c;大数据集会消耗太过漫长的时间sort by&#xff1a;局部排序&#xff0c;只能保证每个reducer的输出数据都是有序的distribute by&#xff1a;分桶不排序&#xff0c;控制map…

[scikit-learn 机器学习] 7. 朴素贝叶斯

文章目录1. 朴素贝叶斯2. NB 与 逻辑回归对比本文为 scikit-learn机器学习&#xff08;第2版&#xff09;学习笔记相关知识参考&#xff1a;《统计学习方法》朴素贝叶斯法&#xff08;Naive Bayes&#xff0c;NB&#xff09; 1. 朴素贝叶斯 通过最大概率来预测类&#xff1a…