力扣LCR 180. 文件组合(双指针)

Problem: LCR 180. 文件组合

题目描述

在这里插入图片描述在这里插入图片描述

思路及解法

本题目可以利用滑动窗口的技巧(滑动窗口就是双指针的运用)解决,具体实现如下

1.逻辑上生成窗口:让两个指针i,j分别初始化为1,2,并定义一个用于维护“窗口”的目标整形值sum,初始化为3
2.维护窗口:

若sum等于target则将j-i+1“窗口”内的值添加到结果集合中;然后sum -= i;i++;j++;sum += j;(维护新的“窗口”)
若sum大于target,则sum -= i;i++;
若sum小于target,则j++; sum += j;

复杂度

时间复杂度:

O ( n ) O(n) O(n);其中 n n n为小于或等于 t a r g e t target target的数

空间复杂度:

O ( n 2 ) O(n^2) O(n2)

Code

class Solution {
   
public:
    /**
     * Two pointer
     * @param target Target number
     * @return vector<vector<int>>
     */
    vector<vector<int>> fileCombination(int target) {
   
        vector<vector<int>> result;
        int i = 1;
        int j = 2;
        int sum = 3;
        while (i < j) {
   
            if (sum == target) {
   
                vector<int> temp(j - i + 1);
                for (int k = i; k <= j; ++k) {
   
                    temp[k - i] = k;
                }
                result.push_back(temp);
                sum -= i;
                i++;
                j++;
                sum += j;
            } else if (sum < target) {
   
                j++;
                sum += j;
            } else {
   
                sum -= i;
                i++;
            }
        }
        vector<vector<int>> resultArr(result.size());
        for (int k = 0; k < result.size(); ++k) {
   
            resultArr[k].resize(result[k].size());
            for (int l = 0; l < result[k].size(); ++l) {
   
                resultArr[k][l] = result[k][l];
            }
        }
        return resultArr;
    }
};

相关推荐

  1. 热题100_指针_283_移动零

    2024-01-28 21:48:04       60 阅读
  2. LCR184.设计自助结算系统

    2024-01-28 21:48:04       21 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-28 21:48:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-28 21:48:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-01-28 21:48:04       82 阅读
  4. Python语言-面向对象

    2024-01-28 21:48:04       91 阅读

热门阅读

  1. 力扣365-水壶问题

    2024-01-28 21:48:04       51 阅读
  2. Mybatis的XML配置

    2024-01-28 21:48:04       51 阅读
  3. MyBatis --- 常用注解

    2024-01-28 21:48:04       54 阅读
  4. 前端-打卡每日面试题-数据类型(2024.1.26)

    2024-01-28 21:48:04       51 阅读
  5. 分巧克力(二分实现C++)

    2024-01-28 21:48:04       50 阅读