技术栈

交换

闻缺陷则喜何志丹
6 个月前
c++·算法·leetcode·力扣·交换·组合·最少
【C++ 滑动窗口】2134. 最少交换次数来组合所有的 1 IIC++算法:滑动窗口及双指针总结交换 定义为选中一个数组中的两个 互不相同 的位置并交换二者的值。 环形 数组是一个数组,可以认为 第一个 元素和 最后一个 元素 相邻 。 给你一个 二进制环形 数组 nums ,返回在 任意位置 将数组中的所有 1 聚集在一起需要的最少交换次数。 示例 1: 输入:nums = [0,1,0,1,1,0,0] 输出:1 解释:这里列出一些能够将所有 1 聚集在一起的方案: [0,0,1,1,1,0,0] 交换 1 次。 [0,1,1,1,0,0,0] 交换 1 次。 [
闻缺陷则喜何志丹
2 年前
开发语言·c++·算法·前缀和·滑动窗口·连续1·交换
C++前缀和算法的应用:得到连续 K 个 1 的最少相邻交换次数 原理源码测试用例C++算法:前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 滑动窗口给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1 。每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包含 k 个 连续 1 的 最少 交换次数。 示例 1: 输入:nums = [1,0,0,1,0,1], k = 2 输出:1 解释:在第一次操作时,nums 可以变成 [1,0,0,0,1,1] 得到连续两个 1 。 示例 2: 输入:nums = [1,0,0,