leetcode2311_go_小于等于K的最长二进制子序列

leetcode2311_go_小于等于K的最长二进制子序列

题目

给你一个二进制字符串 s 和一个正整数 k 。

请你返回 s 的 最长序列,且该子序列对应的 二进制 数字小于等于 k 。

注意:子序列可以有 前导 0 。 空字符串视为 0 。

子序列 是指从一个字符串中删除零个或者多个字符后,不改变顺序得到的剩余字符序列。

示例 1:输入:s = “1001010”, k = 5 输出:5

解释:s 中小于等于 5 的最长子序列是 “00010” ,对应的十进制数字是 2 。

注意 “00100” 和 “00101” 也是可行的最长子序列,十进制分别对应 4 和 5 。

最长子序列的长度为 5 ,所以返回 5 。

示例 2:输入:s = “00101001”, k = 1 输出:6

解释:”000001″ 是 s 中小于等于 1 的最长子序列,对应的十进制数字是 1 。

最长子序列的长度为 6 ,所以返回 6 。

提示:1 <= s.length <= 1000

s[i] 要么是 ‘0’ ,要么是 ‘1’ 。

1 <= k <= 109

解题思路分析

1、贪心;时间复杂度O(n),空间复杂度O(1)

func longestSubsequence(s string, k int) int { res := 0 sum, bitValue := int64(0), int64(1) target := int64(k) for i := len(s) – 1; i >= 0; i– { if s[i] == ‘0’ { // 0全部加上 res++ } else if sum <= target { sum = sum + bitValue if sum <= target { // 小于<=k加上 res++ } } if sum <= target && bitValue <= target { bitValue = bitValue * 2 } } return res}

2、贪心;时间复杂度O(n),空间复杂度O(1)

func longestSubsequence(s string, k int) int { res := 0 sum, bitValue := 0, 1 for i := len(s) – 1; i >= 0; i– { if s[i] == ‘0’ { // 0全部加上 res++ } else { if sum+bitValue <= k { res++ sum = sum + bitValue } } if bitValue <= k { bitValue = bitValue * 2 } } return res}

总结

Medium题目,使用贪心思想

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月27日
下一篇 2022年6月27日

相关推荐

  • python 模块 filecmp & difflib

    主要介绍两个 Python 中常用于比较数据的模块,一个是 filecmp 模块,另一个是 difflib 模块。其中,前者主要用于比较文件及目录,后者主要用于比较序列的类和函数,…

    2022年7月4日
  • 基于远程工作区的IDE,帮你完成开发环境一键搭建

    《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的是一个基于远程工作区的集成开发环境(IDE)——Smart…

    2022年6月15日
  • 全国3卷数学考查的特点是什么?

    每一年国家教育部考试中心都会发出一份考试大纲出来,多研究研究考试大纲和往年的高考数学试卷,慢慢地你就会发现有什么特点了。 以2018年全国卷数学3卷为例分析如下: 先从整体分析,2…

    2022年7月3日
  • Python 字符串

    字符串在学习中难度不大,但字符串的‘方法’有很多,只有多用才能融会贯通。 这里写的是一些字符串的常用操作: 字符串是一种序列类型,可以通过for来遍历,也可以[ ] 来切片处理,但…

    2022年6月20日
  • 韦东奕封神之题Python程序帮蚱蜢找路线

    韦东奕2009年“国际数学奥林匹克竞赛”封神之题曝光,没有那么会蹦得蚱蜢? 正是这道题,让韦东奕以1:7的时间比,“击败”了7岁自学微积分、12岁拿到“国际数学奥林匹克大赛”金牌的…

    2022年6月21日
  • Linux shell sed的正向引用和反向引用

    Linux shell 里面 sed的命令能够记住之前的子样式,这样被称为反向引用。 反向引用就是把正则表达式匹配出来的组引用到表达式本身的其他地方。 这里介绍一下sed的反向引用…

    2022年6月27日
  • 儿童患腹泻 服药有顺序

    来源:今晚报 今晚报讯(记者李岩)夏秋交替季节往往是小儿腹泻高发时节,治疗小儿腹泻的常用药物有抗菌药、吸附剂和活菌药等。天津市儿童医院主管药师李荣荣、药师陈麟提醒,在儿童腹泻的治疗…

    2022年8月25日
  • 微信免密支付在哪里设置关闭(免密支付怎么关掉)

    现在手机支付非常普遍,很少人都会使用现金去买东西,但是有没有发现一个问题,就是咱们在买东西或者是付钱的时候,有的时候是需要输入你的支付密码才能支付成功,但是有时候不需要支付密码,只…

    2022年10月18日
  • Android架构师RX响应式编程-Rxjava实战项目教学

    RX定义 Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序 Rx是微软.NET的一个响应式扩展。Rx借助可观测的序列提供一种简单的方式…

    2022年7月6日
  • 美国重返月球时间窗口确定,8月29日首次发射,往返最长需42天?

    在经过两次湿彩排之后,美国新一代登月火箭SLS于当地时间8月17日重返肯尼迪航天中心的39B发射台,预计会在不早于8月29日进行首飞发射,将载有模拟人的“猎户座”飞船送到月球轨道,…

    2022年8月30日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息