数组、链表专题

news2024/12/23 10:52:39

数组、链表专题

    • 前缀和数组
    • LeetCode 303. 区域和检索 - 数组不可变
      • 解题思路
      • 代码实现
    • LeetCode 304. 二维区域和检索 - 矩阵不可变
      • 解题思路
      • 代码实现
    • 总结

不要纠结,干就完事了,熟练度很重要!!!多练习,多总结!!!

前缀和数组

LeetCode 303. 区域和检索 - 数组不可变

在这里插入图片描述

解题思路

核心思路是我们 new 一个新的数组preSum出来,preSum[i]记录nums[0…i-1]的累加和,看图 10 = 3 + 5 + 2:
在这里插入图片描述
看这个preSum数组,如果我想求索引区间[1, 4]内的所有元素之和,就可以通过preSum[5] - preSum[1]得出。
这样,sumRange函数仅仅需要做一次减法运算,避免了每次进行 for 循环调用,最坏时间复杂度为常数O(1)。

代码实现

class NumArray {

    int[] preSum;
    public NumArray(int[] nums) {
        preSum = new int[nums.length +1];

        for(int i = 1;i < preSum.length;i++){
            preSum[i] = preSum[i-1]+nums[i-1];
        }
    }
    
    public int sumRange(int left, int right) {
        return preSum[right+1]-preSum[left];
    }
}

LeetCode 304. 二维区域和检索 - 矩阵不可变

在这里插入图片描述

解题思路

在这里插入图片描述
如果我想计算红色的这个子矩阵的元素之和,可以用绿色矩阵减去蓝色矩阵减去橙色矩阵最后加上粉色矩阵,而绿蓝橙粉这四个矩阵有一个共同的特点,就是左上角就是(0, 0)原点。

那么我们可以维护一个二维preSum数组,专门记录以原点为顶点的矩阵的元素之和,就可以用几次加减运算算出任何一个子矩阵的元素和。

代码实现

class NumMatrix {
    int[][] preSum;

    public NumMatrix(int[][] matrix) {
        int m = matrix.length, n = matrix[0].length;
        preSum = new int[m+1][n+1];

        for(int i = 1;i <= m;i++){
            for(int j = 1;j <= n;j++){
                preSum[i][j] = preSum[i-1][j]+preSum[i][j-1]+matrix[i-1][j-1]-preSum[i-1][j-1];
            }
        }
    }
    
    public int sumRegion(int row1, int col1, int row2, int col2) {
        return preSum[row2+1][col2+1]-preSum[row2+1][col1]-preSum[row1][col2+1]+preSum[row1][col1];
    }
}

总结

本题来源于Leetcode中 归属于数组、链表类型题目。
同许多在算法道路上不断前行的人一样,不断练习,修炼自己!
如有博客中存在的疑问或者建议,可以在下方留言一起交流,感谢各位!

觉得本博客有用的客官,可以给个点赞+收藏哦! 嘿嘿

喜欢本系列博客的可以关注下,以后除了会继续更新面试手撕代码文章外,还会出其他系列的文章!

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

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

相关文章

4726.ACWing.第80场周赛寻找数字

ACWing.第80场周赛寻找数字 题目算法思想代码 题目 算法思想 时间复杂度 相当于01背包的搜索时间复杂度&#xff0c;每个位上要么是 4 要么是 7 &#xff0c;而且题意位数不超过10位&#xff0c;所以dfs可以直接过搜索算法 代码 #include<bits/stdc.h> using namespac…

【LeetCode】235. 二叉搜索树的最近公共祖先

1. 问题 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个结点 p、q&#xff0c;最近公共祖先表示为一个结点 x&#xff0c;满足 x 是 p、q 的祖先且 x 的深度尽可能大&#xff08;一个节点也可…

项目骨架搭建

CSS样式补充 精灵图 CSS精灵图&#xff08;CSS Sprites&#xff09;是一种网页优化技术&#xff0c;通过将多个小图像合并成一个大图像&#xff0c;然后通过CSS的背景定位&#xff08;background-position&#xff09;属性来显示对应的图像部分。这种技术可以减少HTTP请求次数…

【Win11 | SSH】详细教你如何在Windows 11 下完成OpenSSH的安装(保姆级攻略)

文章目录 一、问题描述二、问题尝试解决2.1 ssh的问题2.2 如何手动安装2.3 install 脚本找不到2.4 power shell 开始报错2.5 继续安装ssh 三、输入 ssh 再报错 一、问题描述 最近在测试github的连接时&#xff0c;在终端或命令行窗口中&#xff0c;输入以下命令测试你的 SSH 连…

【五一创作】医院手术室麻醉管理系统概述和功能 SQLServer 2008 R2

医院手术室麻醉管理系统概述 1.系统功能概述 手术麻醉管理系统采用下拉式汉化菜单&#xff0c;界面友好&#xff0c;实用性强&#xff0c;设有与住院、病区、药房等系统的软件接口。 系统主要功能有&#xff1a; 手术管理&#xff1a;提供手术病人检索、手术申请、手术安排…

VSCode配置Arduino

综上所周知&#xff0c;Arduino IDE太不智能了&#xff0c;没有代码提示&#xff0c;不能代码跳转&#xff0c;于是乎找一下vscode有啥插件用 在网上找了些教程&#xff0c;也碰到了奇奇怪怪地坑&#xff0c;于是记录一下能成功配置步骤 准备 1.已安装好Arduino IDE 2.已安装好…

Clion开发STM32之串口封装(HAL库)

前提 在开发STM32过程中&#xff0c;芯片提供的串口引脚一般是不会发生变化的&#xff0c;所以为了方便移植&#xff0c;借助HAL提供的注册回调函数自定义&#xff0c;这边重新进行简要的封装此工程开发是以Clion为开发的IDE,用keil只需将对应的文件进行移植即可.文章末尾附带…

Photoshop如何使用选区之实例演示?

文章目录 0.引言1.利用快速选择工具抠图2.制作网店产品优惠券3.利用选区改变眼睛颜色4.抠取复杂的花束5.制作丁达尔光照效果6.利用选区调整图像局部颜色 0.引言 因科研等多场景需要进行绘图处理&#xff0c;笔者对PS进行了学习&#xff0c;本文通过《Photoshop2021入门教程》及…

STM32F103 系统架构

1、Cortex M3 内核 & 芯片 ARM公司提供内核&#xff08;如Cortex M3&#xff0c;简称CM3&#xff0c;下同&#xff09;授权&#xff0c;完整的MCU还需要很多其他 组件。芯片公司&#xff08;ST、NXP、TI、GD、华大等&#xff09;在得到CM3内核授权后&#xff0c;就可以把C…

Linux网络基础二

一.应用层 我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层。 二.再谈 "协议" 协议是一种 "约定". socket api的接口, 在读写数据时, 都是按 "字符串" 的方式来发送接收的. 如果我们要传输一些"结构化…

VBA替换中文文献引用出现的et al.和and

问题描述&#xff1a;Endnote是常用的文献管理工具&#xff0c;并提供国标模板Chinese Std GBT7714 (numeric).ens&#xff0c;但Endnote在中英文混排上略欠考虑。Chinese Std GBT7714使用序号的形式&#xff08;******1&#xff09;对文献进行引用&#xff0c;但有时我们需要以…

python毕业设计之django+vue医院医疗救助系统

&#xff08;1&#xff09; 信息发布 当有基金的申请审批通过时&#xff0c;慈善机构信息维护部门应与慈善机构进行对接&#xff0c;保证信息的真实性&#xff0c;信息发布之后患者可以进行相应的基金申请。 &#xff08;2&#xff09; 基金管理 此项功能是保证基金信息的动态刷…

HR员工管理的三重境界:管事、管人、管心

在一个公司里&#xff0c;员工来来往往是常态&#xff0c;虽说我们不能替他们决定&#xff0c;但是一定是与公司的管理者有一定的关系。马云曾经说过&#xff1a;“一个员工离职&#xff0c;不外乎两种原因&#xff0c;一是钱没给到位&#xff1b;二是心里委屈了”。一句话就是…

笔记:计算机网络体系结构(OSI七层模型、TCP/IP五层协议)

计算机网络体系结构 计算机网络是一个复杂的、具有综合性技术的系统&#xff0c;它由计算机系统、通信处理机、通信线路和通信设备、操作系统以及网络协议等组成。为了更好地描述计算机网络结构&#xff0c;使计算机网络系统有条不紊地处理工作&#xff0c;需要定义一种较好的…

2023.04.30 学习周报

文章目录 摘要文献阅读1.题目2.摘要3.介绍4.本文贡献5.数据处理6.模型6.1 look - up操作6.2 LSTM6.3 周期模拟及额外因素 7.实验7.1 数据集7.2 基线7.3 实验表现 8.结论 ISOMAP1.基本思想2.欧氏距离3.折线近似曲线4.计算折线长度5.Floyd-Warshall算法6.ISOMAP算法7.总结 数学建…

Educoder/头歌JAVA——Java Web:基于JSP的网上商城

目录 一、商品列表 本关任务 具体要求 结果输出 实现代码 二、商品详情 本关任务 JDBC查询方法封装 商品相关信息介绍 具体要求 结果输出 实现代码 三、商品搜索 编程要求 测试说明 实现代码 四、购物车列表 本关任务 JDBC查询方法封装 购物车相关信息介绍…

IPsec中IKE与ISAKMP过程分析(主模式-消息4)

IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息1&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息2&#xff09;_搞搞搞高傲的博客-CSDN博客 IPsec中IKE与ISAKMP过程分析&#xff08;主模式-消息3&#xff09;_搞搞搞高傲的博客…

Jenkins+Docker+gitee 持续部署spring boot 应用教程

目录 参考安装jenkinsci拉取镜像创建目录安装maven启动镜像配置输入密码安装推荐的插件 创建用户密码配置环境变量安装gitee和dingtalk插件创建SpringBoot并创建Dockfile配置gitee的webhook配置构建shell脚本配置监听gitee webhook触发构建 配置dingtalk钉钉通知 参考 Jenkins…

归纳截图小结

文章目录 web服务器、缓存和PHP加速对比没有做软连接http状态码cookie是什么图形管理界面nginx的访问路径LANM架构redisd服务整体框架免密连接kubeletk8s架构图kubeadm、kubectl、kubelet作用k8s集群token失效时&#xff0c;重新创建tokenk8s网络通信OSI总结pod的理解k8s核心知…

springboot+vue高校实验室预约管理系统

开发环境 开发语言&#xff1a;Java 后端框架&#xff1a;springbootweb 前端框架&#xff1a;vue.js 服务器&#xff1a;tomcat 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 校实验…