LeetCode-剑指57-II.和为s的连续正数序列

news2024/11/30 14:31:58

在这里插入图片描述

1、循环

我们可以一次循环每一个数,在 ⌊ n 2 ⌋ \left \lfloor \frac{n}{2} \right \rfloor 2n的范围内循环检查添加新的数字后形成的数组和是否为target,若是则将当前数组加入结果当中;否则继续进行循环或跳出循环。

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>> vec;
        vector<int> res;
        int sum = 0, limit = (target - 1) / 2;
        for (int i = 1; i <= limit; ++i) {
            for (int j = i;; ++j) {
                sum += j;
                if (sum > target) {
                    sum = 0;
                    break;
                } else if (sum == target) {
                    res.clear();
                    for (int k = i; k <= j; ++k) {
                        res.emplace_back(k);
                    }
                    vec.emplace_back(res);
                    sum = 0;
                    break;
                }
            }
        }
        return vec;
    }
};

2、循环优化

我们可以利用求和公式对累加进行优化,在我们已经则是target的前提下,我们可以使用公式直接反向求得区间上限。因此我们只需要满足区间上限为整数即可。

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>> vec;
        vector<int> res;
        int sum = 0, limit = (target - 1) / 2;
        for (int x = 1; x <= limit; ++x) {
            long long delta = 1 - 4 * (x - 1ll * x * x - 2 * target);
            if (delta < 0) {
                continue;
            }
            int delta_sqrt = (int)sqrt(delta + 0.5);
            if (1ll * delta_sqrt * delta_sqrt == delta && (delta_sqrt - 1) % 2 == 0) {
                int y = (-1 + delta_sqrt) / 2;
                if (x < y) {
                    res.clear();
                    for (int i = x; i <= y; ++i) {
                        res.emplace_back(i);
                    }
                    vec.emplace_back(res);
                }
            }
        }
        return vec;
    }
};

3、双指针

我们可以使用左右指针来控制当前区间的范围:1、当 s u m < t a r g e t sum < target sum<target时,说明当前区间过小,我们需要右移右指针;2、当 s u m = t a r g e t sum = target sum=target时,说明当前区间就是我们需要的区间,将其加入结果当中并将左指针右移寻找下一个区间;3、当 s u m > t a r g e t sum > target sum>target时,说明当前区间超过范围,我们不需要继续查询,将左指针右移查找下一个可能的区间。循环在左指针超过总区间的一半时停止循环。

class Solution {
public:
    vector<vector<int>> findContinuousSequence(int target) {
        vector<vector<int>>vec;
        vector<int> res;
        for (int l = 1, r = 2; l < r;){
            int sum = (l + r) * (r - l + 1) / 2;
            if (sum == target) {
                res.clear();
                for (int i = l; i <= r; ++i) {
                    res.emplace_back(i);
                }
                vec.emplace_back(res);
                l++;
            } else if (sum < target) {
                r++;
            } else {
                l++;
            }
        }
        return vec;
    }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26148.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VR,向「B」而生

VR仍是一门好生意&#xff0c;对于VR厂商而言&#xff0c;能否看到VR技术大规模普及的那一天&#xff0c;在于是否认清当下局势&#xff0c;即什么时间干什么事。毕竟在这个泡沫较多的领域&#xff0c;“脱虚向实”&#xff0c;活下去&#xff0c;专注技术与服务&#xff0c;更…

块级格式化上下文BFC

块级格式化上下文BFC创建格式化上下文BFC有哪些特性&#xff1f;特性一特性二特性三特性四BFC的特性可以解决哪些问题&#xff1f;高度塌陷margin塌陷包含塌陷BFC是前端日常开发中离不开的知识点&#xff0c;“块级格式化上下文”是格式化上下文中最常用的一种&#xff0c;格式…

iOS程序内语言切换使用小结

随着时代的发展&#xff0c;应用程序相继出现了不同语言的版本方案&#xff0c;中文&#xff0c;英文&#xff0c;法文&#xff0c;韩文等等&#xff1b;想在应用程序中实现语言的自由切换&#xff0c;需要配置多个语言的文件&#xff0c;根据用户的动态选择获取不同语言文件下…

数字孪生论文阅读笔记【1】

[1]刘劲松. 高档数控机床数字孪生关键技术研究与应用[D].中国科学院大学(中国科学院沈阳计算技术研究所),2022.DOI:10.27587/d.cnki.gksjs.2022.000005. Motivation 不同数控机床对外信息接口不同&#xff0c;导致信息孤岛机床部件诊断困难&#xff0c;造成资源浪费维护资源不…

计算机中的数据存储规则

计算机的存储规则&#xff1a; text文本image图片sound声音 在计算机中&#xff1a;任意数据都是以二进制的形式进行存储:两种状态. 0与1, 打孔法 进制转换 任意进制转十进制: 公式: 系数 * 基数的权次幂 相加 系数&#xff1a; 就是每一位上的数字 基数&#xff1a;当前的进…

async/await详解

&#x1f431;个人主页&#xff1a;不叫猫先生 &#x1f64b;‍♂️作者简介&#xff1a;专注于前端领域各种技术&#xff0c;热衷分享&#xff0c;期待你的关注。 &#x1f4ab;系列专栏&#xff1a;vue3从入门到精通 &#x1f4dd;个人签名&#xff1a;不破不立 &#x1f36c…

面向对象(高级)

目录 1. 类变量和类方法&#xff08;静态变量&#xff09; 类变量&#xff08;静态变量&#xff09; 内存刨析&#xff1a; 注意事项和使用细节&#xff1a; 类方法&#xff08;静态方法&#xff09;&#xff1a; 使用场景&#xff1a; 注意事项和细节讨论&#xff1a; …

净亏损2.9亿元,财务业绩陷入困境后,逸仙电商盈利仍遥遥无期

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 逸仙电商概况 逸仙电商&#xff08;YSG&#xff09;是一家开曼群岛控股公司&#xff0c;通过与可变利益实体(“VIE”)的合同协议&#xff0c;在中国生产和销售化妆品和美容产品。公司结构如图所示。 逸仙电商成立的目的是…

不懂Hybird开发,感觉错过一个亿~

从当前移动开发的实际情况来看&#xff0c;移动端的开发方式三分天下&#xff1a;纯原生&#xff08;Native App&#xff09;、混合开发&#xff08;Hybird App&#xff09;、网页应用&#xff08;Web App&#xff09;。 ​ 纯原生&#xff08;Native App&#xff09;&#xff…

附录10-JS正则

在JS中有多种内置方法可以使用正则表达式&#xff0c;比如说match,exec,test等 文章参考 第十四章 吃通js正则表达式&#xff0c;javascript前端工程师必会技能_哔哩哔哩_bilibili 目录 1 正则常用方法 1.1 exec的简单使用 1.1.1 基本使用 1.1.2 lastIndex属性 1.1.…

Android Activity跳转

实现点击按钮&#xff0c;发送消息并跳转到另一个Activity MainActivity添加SendMessage方法 const val EXTRA_MESSAGE "com.example.myfirstapp.MESSAGE"class MainActivity : AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super…

【C++】string的使用

文章目录一、前言二、标准库中的string类三. string类的常用接口1. 构造函数2. 容量操作3. 访问遍历4. 修改操作5. 其他操作一、前言 C语言中&#xff0c;字符串是以\0结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0…

ubuntu18.04服务搭建yolov5开发环境

文章目录1. 系统和显卡信息2. 下载安装CUDA2.1 1cuda环境变量配置1. 系统和显卡信息 &#xff08;1&#xff09; 系统信息 kanditelpo-System-Product-Name:~$ cat /proc/version Linux version 4.15.0-191-generic (builddlcy02-amd64-032) (gcc version 7.5.0 (Ubuntu 7.5.…

PDF如何转Word?分享几个实用办公软件给你

PDF是我们常用的文件格式&#xff0c;因为它的兼容性好&#xff0c;在手机、电脑查看文件都不影响文件的格式与内容。并且它的保密性也好&#xff0c;因为它无法在线更改文件内容&#xff0c;但这也说明了&#xff0c;我们如果需要对其进行更改的话&#xff0c;将需要把PDF格式…

解决Vue3中echarts无法缩放的问题

这里写自定义目录标题前言问题描述官网示例正常官网示例在本地缩放异常灵光乍现问题解决前言 实际工作中&#xff0c;使用到vue和echarts技术。项目原来用的vue2echarts4&#xff0c;后来更新到了vue3echarts5&#xff0c;结果遇到echarts无法绽放的问题。 问题描述 官网示例…

PDF、Word、Excel文件前端预览实操干货都在这!

随着Odoo在各个行业领域的深入应用&#xff0c;对Odoo的前端交互体验要求也越来越高。 我们在项目开发中常常会遇到&#xff0c;需要上传文件并预览的问题。 这里是我遇到的需求&#xff0c;并完成的一个小demo。 在Odoo中实现文件上传 首先我们需要在qweb页面中加入上传的…

Chrome浏览器插件开发v3版本第二篇:改变页面布局案例

跟着官方教程走才是硬道理&#xff1a;https://developer.chrome.com/docs/extensions/mv3/getstarted/tut-focus-mode/ 老规矩&#xff0c;搭建基本的项目结构&#xff1a;创建一个manifest.json文件 {"manifest_version":3,"name":"Focus",&…

[附源码]Python计算机毕业设计宠物销售管理系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

SQL Server中row_number函数用法介绍

一、SQL Server Row_number函数简介 ROW_NUMBER()是一个Window函数&#xff0c;它为结果集的分区中的每一行分配一个连续的整数。 行号以每个分区中第一行的行号开头。 语法实例&#xff1a; select *&#xff0c;row_number() over(partition by column1 order by column2)…

PaddlePaddle飞浆搭建和机器学习文字识别

PaddlePaddle飞浆搭建和机器学习文字识别 文章转自&#xff1a;https://lingkang.top/archives/paddlepaddle-fei-jiang-da-jian-he-ji-qi-xue-xi-wen-zi-shi-bie 官网&#xff1a;https://www.paddlepaddle.org.cn/ 飞桨&#xff08;PaddlePaddle&#xff09;以百度多年的深…