Leetcode—1588.所有奇数长度子数组的和【简单】

2023每日刷题(十九)

Leetcode—1588.所有奇数长度子数组的和

在这里插入图片描述

直接法实现代码



int sumOddLengthSubarrays(int* arr, int arrSize){
    int i = 1;
    int sum = 0;
    int left = 0, right;
    int k;
    int j = 0;
    while(i <= arrSize) {
        for(left = 0; left < arrSize; left++) {
            right = left + i;
            k = left;
            if(right <= arrSize) {
                while(k < right) {
                    sum += arr[k++];
                }
            } else {
                break;
            }
        }
        j++;
        i = 2 * j + 1;
    }
    return sum;
}

运行结果

在这里插入图片描述

枚举法实现代码



int sumOddLengthSubarrays(int* arr, int arrSize){
    int ans = 0, sum;
    for(int i = 0; i < arrSize; i++) {
        for(int j = i; j < arrSize; j++) {
            if((j - i + 1) % 2 == 1) {
                sum = 0;
                for(int k = i; k <= j; k++) {
                    sum += arr[k];
                }
                ans += sum;
            }
        }
    }
    return ans;
}

运行结果

在这里插入图片描述
时间复杂度 O ( n 3 ) O(n^3) O(n3),空间复杂度 O ( 1 ) O(1) O(1)

改进的实现代码



int sumOddLengthSubarrays(int* arr, int arrSize){
    int ans = 0, sum;
    for(int i = 0; i < arrSize; i++) {
        sum = 0;
        for(int j = i; j < arrSize; j++) {
            sum += arr[j];
            if((j - i + 1) % 2 == 1) {
                ans += sum;
            }
        }
    }
    return ans;
}

时间复杂度 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( 1 ) O(1) O(1)

运行结果

在这里插入图片描述

前缀和实现代码



int sumOddLengthSubarrays(int* arr, int arrSize){
    int *preSum = (int *)malloc(sizeof(int) * (arrSize + 1));
    preSum[0] = 0;
    for(int i = 0; i < arrSize; i++) {
        preSum[i + 1] = preSum[i] + arr[i];
    }
    int ans = 0;
    for(int i = 0; i < arrSize; i++) {
        for(int j = i; j < arrSize; j++) {
            if((j - i + 1) % 2 == 1) {
                ans += preSum[j + 1] - preSum[i];
            }
        }
    }
    free(preSum);
    return ans;
}

时间复杂度 O ( n 2 ) O(n^2) O(n2),空间复杂度 O ( n ) O(n) O(n)

运行结果

在这里插入图片描述
之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!


http://www.niftyadmin.cn/n/5151130.html

相关文章

数据库--数据库约束/聚合查询/分组查询/联合查询

前言 逆水行舟&#xff0c;不进则退&#xff01;&#xff01;&#xff01; 目录 数据库约束 聚合查询 分组查询 联合查询 联合查询---内连接与外连接 补充 联合查询用到的代码 数据库约束 not null 约束&#xff1a;在创建表的时候&#xff0c;可以指定列…

Angular 中的路由

1 使用 routerLink 指令 路由跳转 命令创建项目&#xff1a; ng new ng-demo创建需要的组件&#xff1a; ng g component components/home ng g component components/news ng g component components/produect找到 app-routing.module.ts 配置路由: 引入组件: import { Ho…

c++获取和设置环境变量

这个功能非常常用&#xff0c;但是容易忘记&#xff0c;这里做个记录。 注意&#xff0c;设置的环境变量只在当前进程中生效&#xff0c;所以在电脑中的环境变量设置区域看不到。 std::string env getenv("PATH");env "X:\\envtest";std::string newEnv…

【rust/esp32】初识slint ui框架并在st7789 lcd上显示

文章目录 说在前面关于slint关于no-std关于dma准备工作相关依赖代码结果参考 说在前面 esp32版本&#xff1a;s3运行环境&#xff1a;no-std开发环境&#xff1a;wsl2LCD模块&#xff1a;ST7789V2 240*280 LCDSlint版本&#xff1a;master分支github地址&#xff1a;这里 关于s…

树莓派4无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)

本文记录了这段比较坎坷的探索之路&#xff0c;由于你的问题不一定是我最终解决方案的&#xff0c;可能是前面探索路上试过的&#xff0c;所以建议按顺序看排除前置问题。 双十一又买了个树莓派 4B&#xff0c;插上之前树莓派 4B 的 TF 卡直接就能使用&#xff08;毕竟是一样规…

Kafka(二)消息系统设计

文章目录 前言整体设计时序图时序图解释 最后 前言 当多个系统之间通过Kafka来解耦时&#xff0c;在系统设计初期&#xff0c;基本的要求都是相似的&#xff0c;只不过是消费消息时的业务逻辑可能不同。 本文以业务系统和邮件系统解耦作为示例。业务系统需要发送邮件时&#…

java APP自动化测试AppIum

一、前言 二、Appium环境搭建 2.1 JDK安装 2.2 Android SDK安装配置 2.3 模拟器安装及配置 2.4 Appium Desktop安装及使用 2.5 Appium配置连接模拟器 三、实战基本脚本编写 3.1 创建Maven项目并配置 3.2 简单Demo 四、写在最后 一、前言 随着移动互联网的发展&#xff0c;AP…

基于51单片机的烟雾和温湿度检测控制系统仿真(智能防火系统,火灾报警灭火系统)

wx供重浩&#xff1a;创享日记 对话框发送&#xff1a;单片机防火 获取完整源码源文件仿真源文件论文报告说明文档等 基于51单片机的光照及温湿度检测报警控制系统 由STC89C52单片机LCD1602液晶显示屏ADC0832模块蜂鸣器DHT11温湿度传感器 烟雾传感器LED按键构成 具体功能&…