首页 > 其他分享 >leetcode926. 将字符串翻转到单调递增

leetcode926. 将字符串翻转到单调递增

时间:2024-10-08 10:50:04浏览次数:9  
标签:charAt 示例 length 单调 字符串 leetcode926 dp 翻转

如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的,那么该字符串是 单调递增 的。

给你一个二进制字符串 s,你可以将任何 0 翻转为 1 或者将 1 翻转为 0 。

返回使 s 单调递增的最小翻转次数。

示例 1:

输入:s = "00110"
输出:1
解释:翻转最后一位得到 00111.

示例 2:

输入:s = "010110"
输出:2
解释:翻转得到 011111,或者是 000111。

示例 3:

输入:s = "00011000"
输出:2
解释:翻转得到 00000000。

提示:

  • 1 <= s.length <= 105
  • s[i] 为 '0' 或 '1'
/**
 * @param {string} s
 * @return {number}
 */
var minFlipsMonoIncr = function(s) {
    let dp = Array.from({length:s.length + 1}).map(item => [0,0]);
    dp[0][0] = s.charAt(0) == '0' ? 0 : 1;
    dp[0][1] = s.charAt(0) == '1' ? 0 : 1;
    for(let i = 1;i < s.length;i++){
        dp[i][0] = dp[i - 1][0] + (s.charAt(i) == '0' ? 0 : 1);
        dp[i][1] = Math.min(dp[i-1][0],dp[i-1][1]) + (s.charAt(i) == '1' ? 0 : 1);
    }
    return Math.min(dp[s.length -1][0],dp[s.length - 1][1]);
};

标签:charAt,示例,length,单调,字符串,leetcode926,dp,翻转
From: https://blog.csdn.net/Turboyiyi/article/details/142754331

相关文章

  • 单调栈 & 单调队列
    单调栈&单调队列单调栈引入单调栈是什么?顾名思义,单调栈即满足单调性的栈结构,与单调队列相比,其只在一端进行进出。过程插入将一个元素插入单调栈时,为维护栈的单调性,需要在保证将该元素插入到栈顶后整个栈满足单调性,并且使弹出的元素最少伪代码insertxwhile!sta.empty(......
  • 基于java+springboot的医学电子技术线上翻转课堂系统(源码+lw+部署文档+讲解等)
    课题简介医学电子技术线上翻转课堂系统基于Java和SpringBoot开发,是为医学教育领域量身打造的创新教学平台。该系统借助Java的稳定性和强大性能,以及SpringBoot的高效开发特性,确保系统能够稳定运行且易于维护和扩展。它涵盖了丰富的功能模块,包括课程资源管理、学......
  • 代码随想录算法训练营 | 56. 合并区间,738.单调递增的数字
    56.合并区间题目链接:56.合并区间文档讲解︰代码随想录(programmercarl.com)视频讲解︰合并区间日期:2024-10-06想法:重叠区间类似问题Java代码如下:classSolution{publicint[][]merge(int[][]intervals){List<int[]>res=newArrayList<>();Arra......
  • 单调栈
    单调栈是一种内部元素具有单调性的栈,可以解决与“以某个值为最值的最大区间”等问题。例题:P2866[USACO06NOV]BadHairDayS有\(N\(1\leN\le80000)\)头奶牛,第\(i\)头牛的身高为\(h_i\(1\leh_i\le10^9)\)。每只奶牛往右边看,可以看到严格小于它身高的牛的头顶......
  • [leetcode 25]. K 个一组翻转链表
    题目描述:https://leetcode.cn/problems/reverse-nodes-in-k-group给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你不能只是单纯......
  • [JSOI2008] 最大数 (单调栈)
    算法基础发现插入总在最后一个进行单调栈维护一个区间的\(max/min\)单调队列维护以一个值为\(max/min\)的最大区间显然可以使用单调栈维护其原理为当\(a,b\inseq,a<b,pos[a]<pos[b]\)那么显然\(a\)没有卵用因此可以用单调栈维护一个包含\(seq\)的......
  • 单调队列优化 DP
    单调队列可以\(O(n)\)求出子区间的最值,且顺序上要求区间的左端点和右端点单调不降。引入P1886滑动窗口/【模板】单调队列定义一个队列\(q\),我们让\(q\)中的元素满足单调不降。因此当\(x\)入队时,从前往后让不在当前范围的元素出队,从后往前将\(<x\)的元素全部出队,然......
  • c语言实现:链表创建、插入、删除、翻转
    #include<stdio.h>#include<stdlib.h>//链表创建typedefstructNode{intdata;structNode*next;}Node;//创建一个节点Node*createNode(intdata){Node*newNode=(Node*)malloc(sizeof(Node));newNode->data=data;newNode......
  • 单调队列优化DP解题报告(uoj转)
    Fence\(K\)很小,考虑\(K\)开一维,\(N\)开一维\(f_{i,j}\)表示前\(i\)个工匠粉刷前\(j\)个木板的最大花费\(f_{i,j}=\min_{k=j-l_i}^{s_i-1}f_{i-1,k}+(j-k)\cdotp_i\)拆开为\(f_{i,j}=f_{i-1,k}-k\cdotp_i+j\cdotp_i\)\(i\)固定时维护\(f_{i-1,k}-k\cdotp_i\)的最小......
  • PTA JAVA语言 6-1 数字翻转
    6-1数字翻转分数10全屏浏览切换布局作者 Ma单位 山东科技大学现需要编写一个方法publicstaticintrNum(intnum)用于对用户输入的三位数进行翻转。裁判测试程序样例:importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[]args){......