首页 > 其他分享 >1703. 得到连续 K 个 1 的最少相邻交换次数

1703. 得到连续 K 个 1 的最少相邻交换次数

时间:2022-12-18 18:11:41浏览次数:68  
标签:1703 nums int 相邻 add 最少 preSum size

1703. 得到连续 K 个 1 的最少相邻交换次数

class Solution {
    public int minMoves(int[] nums, int k) {
        List<Integer> g = new ArrayList<Integer>();
        List<Integer> preSum = new ArrayList<Integer>();
        preSum.add(0);
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] == 1) {
                g.add(i - g.size());
                preSum.add(preSum.get(preSum.size() - 1) + g.get(g.size() - 1));
            }
        }
        int m = g.size(), res = Integer.MAX_VALUE;
        for (int i = 0; i <= m - k; i++) {
            int mid = i + k / 2;
            int r = g.get(mid);
            res = Math.min(res, (1 - k % 2) * r + (preSum.get(i + k) - preSum.get(mid + 1)) - (preSum.get(mid) - preSum.get(i)));
        }
        return res;
    }
}

作者:力扣官方题解
链接:https://leetcode.cn/problems/minimum-adjacent-swaps-for-k-consecutive-ones/solutions/2024008/de-dao-lian-xu-k-ge-1-de-zui-shao-xiang-mk5ws/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

标签:1703,nums,int,相邻,add,最少,preSum,size
From: https://www.cnblogs.com/eiffelzero/p/16990720.html

相关文章

  • 基于Python和GDAL提取栅格数据相邻地物的边界
    摘录于 https://blog.csdn.net/weixin_43123242/article/details/935251751.下载第三方包在网址https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml下载对应python版本......
  • 求x到y的最少计算次数
    不太清楚为什么会是BFS和DFS哦,这样,从x出发,每次“+1”、“-1”、“*2”三条路径广度优先,一层一层往下走,同时一层一层向下构造,得到第一个等于y的,层数就是结果publics......
  • 1785. 构成特定和需要添加的最少元素
    1785.构成特定和需要添加的最少元素题解:求数组和a和goal的距离每次取最大的limit,如果不能整除则答案还要加一classSolution{publicintminElements(int......
  • 「贪心」构成特定和需要添加的最少元素(力扣第1785题)
    本题为12月16日力扣每日一题题目来源:力扣第1785题题目tag:贪心题面题目描述给你一个整数数组nums,和两个整数limit与goal。数组nums有一条重要属性:abs(nums[i])<=......
  • 剑指offer103:最少的硬币数目
    题目:给定不同面额的硬币coins和一个总金额amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回-1。你可以认......
  • 剑指offer88:爬楼梯的最少成本
    题目:数组的每个下标作为一个阶梯,第i个阶梯对应着一个非负数的体力花费值cost[i](下标从0开始)。每当爬上一个阶梯都要花费对应的体力值,一旦支付了相应的体力值,就可以选......
  • 1827. 最少操作使数组递增
    1827.最少操作使数组递增classSolution{publicintminOperations(int[]nums){intn=nums.length;intres=0;for(inti=1;i......
  • 1827. 最少操作使数组递增 ----- 贪心算法
    给你一个整数数组 nums (下标从0开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。比方说,如果 nums=[1,2,3] ,你可以选择增加 nums[1] 得到 nums=......
  • 力扣每日一题2022.12.11---1827. 最少操作使数组递增
    给你一个整数数组 nums (下标从0开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。   比方说,如果 nums=[1,2,3] ,你可以选择增加 nums[1] 得到 n......
  • [研究中] 固定半径最少圆覆盖问题/固定数量最小半径覆盖问题
    一、固定半径最少圆覆盖问题背景:二维坐标轴中,给出n个点以及每个点的坐标(坐标为浮点型),和一个长度m(m为浮点型),求至少需要多个半径为m的圆可以把所有点覆盖住输入:第一行输入n......