当前位置: 首页 > news >正文

leetcode-2311.小于等于k的最长二进制子序列

题目描述

解题思路

这一题要求是子序列如果改成连续子序列难度不是一个子序列什么子序列就是这个字符取出若干字符原先出现的顺序组合形成字符串比如00101010这个字符00000一个子序列101010一个连续子序列

那么首先如果一个简单想法所有0全部拿出来组成一个子序列一定小于等于k因为此时0然后看看哪些1插入

那么由于字符串越靠前1插入带来增长越大所以字符串尾部往前遍历选择插入1插入插入一个1带来增长与它当前位置距离末尾字符位置距离pow_有关pow(2,pow_)那么我们可以1<<pow_计算

潜在在于字符s可能很长那么这个长度一直计算左移带来数值溢出问题

题目k范围int类型所以31以内比较安全(int 有1位表示正负)pow_超过31无需计算左移直接跳过1即可因为这样带来增长一定k

代码

int longestSubsequence(string s, int k) {int pow_ = -1, sum = 0,ret = 0;for(int i = s.size() - 1;i >= 0; i--){
		pow_ ++;if(s[i] == '1'){if(pow_ >= 31) continue;else if(int tmp = sum + (1 << pow_);tmp > k) 		continue;else 
				sum = tmp;}
		ret ++;}	return ret;
}

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

相关文章:

  • 如何进行 iOS App 混淆加固?IPA 加壳与资源保护实战流程
  • Redis核心知识详解:从全局命令到高级数据结构
  • 大屏可视化制作指南
  • redis总结
  • 鸿蒙实时音视频流处理框架开发实战——基于HarmonyOS 4.0与分布式软总线的低延时高可靠架构
  • php项目部署----------酒店项目
  • CUDA —— 1.1、C++与CUDA混合编程,C++调用cuda自定义类进行运算操作(附:Windows下Vs2017编程环境配置)
  • 怎么把本地仓库push 到gitlab 上
  • GitLab 18.1 发布 Runner、无效的个人访问令牌查看等功能,可升级体验!
  • Unity AR构建维护系统的以AI驱动增强现实知识检索系统
  • [C#]C# winform部署yolov13目标检测的onnx模型
  • VTK中的形态学处理
  • Pytest项目_day03(Postman使用)
  • # RK3588 Linux SDK 完整问题解决记录-编译内核头文件
  • React:利用计算属性名特点更新表单值
  • 鸿蒙边缘智能计算架构实战:从环境部署到分布式推理全流程
  • flutter的包管理#资源管理#调试Flutter应用#Flutter异常捕获
  • 龙蜥Confidential AI:开源机密计算AI解决方案,让云端模型安全运行
  • 推荐一个前端基于vue3.x,vite7.x,后端基于springboot3.4.x的完全开源的前后端分离的中后台管理系统基础项目(纯净版)
  • R语言使用nonrandom包进行倾向评分匹配
  • Golang中的map使用
  • Vue 2 项目中内嵌 md 文件
  • OpenCV计算机视觉实战(13)——轮廓检测详解
  • C++ - vector 的相关练习
  • AMS流媒体服务器-新版(h265-flv)
  • Spring--IOC容器的启动流程图解版
  • 大数据在UI前端的应用深化研究:用户行为模式的挖掘与分析
  • Axure版AntDesign 元件库-免费版
  • 使用Adobe Acrobat DC创建PDF表单域的完整指南
  • Linux网络协议栈的基石:深入剖析inet_hashtables.c的高效设计