C语言每日一题(20)最大公因数等于 K 的子数组数目

news2024/11/20 7:09:37

力扣 2447 最大公因数等于 K 的子数组数目

题目描述

给你一个整数数组 nums 和一个整数 k ,请你统计并返回 nums 的子数组中元素的最大公因数等于 k 的子数组数目。

子数组 是数组中一个连续的非空序列。

数组的最大公因数 是能整除数组中所有元素的最大整数。

思路分析

基于滑动窗口的思想,从数组最左边的最小连续子数组开始匹配,匹配成功一次,计数器+1,同时子数组向右扩展继续匹配下一个子数组,直到遍历整个数组结束,或者公因数小于k结束(原因是:如果公因数小于k,那继续匹配的下一个也一定小于k,此时继续循环没有意义)

公因数思路:

根据性质,a,b的最大公因数等于a,a-b的最大公因数(a>b的前提下)

步骤流程

(力扣环境下)

1.定义最大公因数函数:

如果a大于b,则将a-b的值赋给a,反之则b=b-a,循环到两者相等结束(即a-b==0),返回a或b。

2.定义i指向数组的最左边,开始遍历整个数组

每次循环:

1.定义一个target保存nums【i】的值,定义j从i位置开始遍历整个数组

j每次循环:

将target与nums【j】的最大公因数赋给target,如果target==k,怎计数器count++,同时j++扩展连续子数组(求多个值的最大公因数,可以先求两个的,再与剩下的求,以此类推),但如果target小于k,则直接跳出循环。

3.循环结束后,返回count。

int GCD(int a,int b)
{
    while((a-b)!=0)
    {
        if(a>b)
        {
            a=a-b;
        }
        else
        {
            b=b-a;
        }
    }
    return a;
}

int subarrayGCD(int* nums, int numsSize, int k){
    int i=0;
    int count=0;
    for(i=0;i<numsSize;i++)
    {
        int tar=nums[i];
        for(int j=i;j<numsSize;j++)
        {
            tar=GCD(tar,nums[j]);
            if(tar==k)
            {
                count++;
            }
            else if(tar<k)//小于k直接跳出,继续没有意义
            {
                break;
            }
        }
    }
    return count;
}

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

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

相关文章

【EI会议征稿】2024年电力电子与人工智能国际学术会议(PEAI 2024)

2024年电力电子与人工智能国际学术会议&#xff08;PEAI 2024&#xff09; 2024 International Conference on Power Electronics and Artificial Intelligence&#xff08;PEAI 2024&#xff09; 2024年电力电子与人工智能国际学术会议&#xff08;PEAI 2024&#xff09;将于…

C++基础算法⑦——信奥一本通递归算法(放苹果、求最大公约数问题、2的幂次方表示、分数求和、因子分解、判断元素是否存在)

递归算法 1206&#xff1a;放苹果1207&#xff1a;求最大公约数问题1208&#xff1a;2的幂次方表示1209&#xff1a;分数求和1210&#xff1a;因子分解1211&#xff1a;判断元素是否存在 1206&#xff1a;放苹果 这道题还是有些难度的&#xff0c;我们要考虑几种放苹果的情况。…

进程优先级、切换、调度

进程的特性是动态&#xff0c;并发&#xff0c;独立&#xff0c;异步&#xff0c;我们今天来浅显的从并发入手介绍各种知识 系统进程数目众多&#xff0c;而CPU资源只有少量&#xff0c;甚至1个&#xff0c;所以进程之间是具有竞争属性的。 为了高效完成任务&#xff0c;更合理…

利用Excel支持JUnit参数化测试

在JUnit里面&#xff0c;可以使用CsvFileSource读取csv文件进行参数化测试&#xff0c;可是CSV文件不支持格式&#xff0c;编辑颇为麻烦&#xff0c;尤其是多次编辑&#xff0c;因此自然想到是否可以使用Excel文件&#xff0c;可以有各种格式&#xff0c;支持各类数据。 最新开…

mysql/java/springboot/javaweb请假系统,分为学生/辅导员/超级管理员

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 系统分为 学生/辅导员/超级管理员 学生 辅导员 超级管理员

gulp自动化构建

什么是Gulp? Gulp是一种前端开发过程中广泛使用的自动化构建工具&#xff0c;它是基于Node.js构建的&#xff0c;能够极大地提高开发效率和代码质量。Gulp的主要功能包括文件的压缩、合并、重命名等&#xff0c;同时它也支持文件监听和浏览器自动刷新等功能。使用Gulp&#x…

hdlbits系列verilog解答(模块)-20

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 到目前为止&#xff0c;您已经熟悉了 module模块 &#xff0c;这是一种通过输入和输出端口与其外部交互的电路。更大、更复杂的电路是通过将较小的模块和其他连接在一起的部分&#xff08;例如赋值语句和alway…

基于web的音乐网站播放器,类似网易云

源码下载地址 支持&#xff1a;远程部署/安装/调试、讲解、二次开发/修改/定制 随着互联网技术的不断发展&#xff0c;音乐流媒体服务得到了广泛的普及。用户可以通过在线音乐网站、音乐APP等渠道随时随地收听和分享自己喜欢的音乐。因此&#xff0c;开发一个高效、稳定、易用…

高等数学教材重难点题型总结(五)定积分

总的来说&#xff0c;只要不定积分掌握得好&#xff0c;基础的定积分肯定没问题&#xff1b;对于考研的话&#xff0c;在定积分定义、牛莱公式、反常积分、审敛法的理解要求更高一些&#xff08;数一还会涉及到伽马函数~&#xff09; 1.利用定义计算定积分 2.定积分的近似计算 …

CentOS 编译安装 nginx

CentOS 编译安装 nginx 修改 yum 源地址为 阿里云 curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repoyum makecache升级内核和软件 yum -y update安装常用软件和依赖 yum -y install gcc gcc-c make cmake zlib zlib-devel openss…

C++之#pragma once实例总结(二百四十七)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

uniapp-微信授权登录

对于制作这个demo的时候是可以使用的&#xff0c;如果不能使用勿喷&#xff0c;如有问题评论区讨论&#xff0c;谢谢大家&#xff01; 目录 ​编辑 前言 完整代码以及注释、使用方法 用法 解析 前言 在移动应用开发中&#xff0c;提供第三方登录是一种常见的用户认证方式…

Android Studio Logcat日志VIVO手机显示*号问题

咨询VIVO客服 1、拨盘输入 *#06# 获取串码&#xff0c;发送给客服 2、拨号盘输入*#*#112#*#*-右上角菜单-更多-一键授权 注意不要刷机&#xff0c;恢复出厂设置&#xff0c;手动取消授权哦

【数据结构】数组和字符串(五):特殊矩阵的压缩存储:稀疏矩阵——压缩稀疏行(CSR)

文章目录 4.2.1 矩阵的数组表示4.2.2 特殊矩阵的压缩存储a. 对角矩阵的压缩存储b~c. 三角、对称矩阵的压缩存储d. 稀疏矩阵的压缩存储——三元组表e. 压缩稀疏行&#xff08;Compressed Sparse Row&#xff0c;CSR&#xff09;矩阵结构体创建CSR矩阵元素设置初始化打印矩阵销毁…

位图算法经典剖析(未完)

第一题 只出现一次的数字|| 给你一个整数数组 nums &#xff0c;除某个元素仅出现 一次 外&#xff0c;其余每个元素都恰出现 三次 。请你找出并返回那个只出现了一次的元素。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 class Solution { publ…

35二叉树-树的最小深度

目录 LeetCode之路——111. 二叉树的最小深度 分析 解法一&#xff1a;广度优先查询 解法二&#xff1a;深度优先查询 LeetCode之路——111. 二叉树的最小深度 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说…

基于STM32与ESP8266的太空人WiFi天气时钟(代码开源)

前言&#xff1a;本文为手把手教学ESP8266著名开源项目——太空人WiFi天气时钟&#xff0c;不同的是本次项目采用的是STM32作为MCU。两者开发过程中有因为各自芯片的特点&#xff08;时钟频率&#xff0c;内存大小等&#xff09;&#xff0c;导致开发程序大不相同&#xff0c;很…

Redis 持久化配置,RDB和AOF方式配置说明

文章目录 一、概述二、RDB 持久化方式配置三、AOF 持久化方式配置 如果您对Redis的了解不够深入请关注本栏目&#xff0c;本栏目包括Redis安装&#xff0c;Redis配置文件说明&#xff0c;Redis命令和数据类型说明。 一、概述 Redis 持久化是指将 Redis 数据存储到磁盘上&#x…

KVM实验之动态迁移

前言 一台NFS&#xff08;192.168.184.132&#xff09; 一台KVM-a&#xff08;192.168.184.133&#xff09; 一台KVM-b&#xff08;192.168.184.134&#xff09; NFS配置&#xff1a; [rootlocalhost ~]# setenforce 0 //关闭selinux [rootlocalhost ~]# service iptables st…

python re 匹配所有字段名称相同的值

import retext {"code": 200,"message": "success","traceId": "da0b668c-4d67-44bf-907f-c072fc63839a","data": {"list": [{"articleId": 121862102,"title": "python 目录…