⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战)

这篇具有很好参考价值的文章主要介绍了⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LCR 012. 寻找数组的中心下标

给你一个整数数组 nums ,请计算数组的 中心下标 。

数组 中心下标 是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。

如果中心下标位于数组最左端,那么左侧数之和视为 0 ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。

如果数组有多个中心下标,应该返回 最靠近左边 的那一个。如果数组不存在中心下标,返回 -1 。

示例 1:
输入:nums = [1,7,3,6,5,6]
输出:3
解释:
中心下标是 3 。
左侧数之和 sum = nums[0] + nums[1] + nums[2] = 1 + 7 + 3 = 11 ,
右侧数之和 sum = nums[4] + nums[5] = 5 + 6 = 11 ,二者相等。

示例 2:
输入:nums = [1, 2, 3]
输出:-1
解释:
数组中不存在满足此条件的中心下标。

示例 3:
输入:nums = [2, 1, -1]
输出:0
解释:
中心下标是 0 。
左侧数之和 sum = 0 ,(下标 0 左侧不存在元素),
右侧数之和 sum = nums[1] + nums[2] = 1 + -1 = 0 。

提示:
1 <= nums.length <= 104
-1000 <= nums[i] <= 1000

题解:

本题我们搭建好左到右前缀和数组和右到左前缀和数组后,根据前缀和数组依次从左向右逐个试探每一个下标,判断是否可形成中心下标即可;

代码:

class Solution {
    public int pivotIndex(int[] nums) {
        int leftSum[] = new int[nums.length];
        int rightSum[] = new int[nums.length];
        int sumL = 0;
        int sumR = 0;
        leftSum[0] = nums[0]; 
        for(int i=1;i<nums.length;i++){
            leftSum[i] = leftSum[i-1] + nums[i]; 
        }

        rightSum[nums.length-1] = nums[nums.length-1];
        for(int i=nums.length-2;i>=0;i--){
            rightSum[i] = rightSum[i+1] + nums[i];
        }

        for(int i=0;i<nums.length;i++){
            if(leftSum[i] - nums[i] == rightSum[i] - nums[i]){
                return i;
            }
        }

        return -1;
    }
}

结果:

⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战),Leetcode每日刷题,# 字符串处理,前缀和,leetcode,算法,数据结构,北邮,Java,前缀和文章来源地址https://www.toymoban.com/news/detail-828355.html

到了这里,关于⭐北邮复试刷题LCR 012. 寻找数组的中心下标__前缀和思想 (力扣119经典题变种挑战)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java寻找数组的中心下标

    目录 1.题目描述 2.题解 分析 具体实现 给你一个整数数组 nums ,请计算数组的  中心下标  。 数组  中心下标   是数组的一个下标,其 左侧所有元素相加的和 等于 右侧所有元素相加的和 。 如果中心下标位于数组最左端,那么左侧数之和视为  0  ,因为在下标的左侧不存

    2024年02月12日
    浏览(38)
  • LeetCode724. 寻找数组的中心下标

    给你一个整数数组  nums  ,请计算数组的  中心下标  。 数组  中心下标   是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。 如果中心下标位于数组最左端,那么左侧数之和视为  0  ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组

    2024年02月14日
    浏览(42)
  • 寻找数组的中心下标-C语言/Java

    描述         数组  中心下标   是数组的一个下标,其左侧所有元素相加的和等于右侧所有元素相加的和。如果中心下标位于数组最左端,那么左侧数之和视为  0  ,因为在下标的左侧不存在元素。这一点对于中心下标位于数组最右端同样适用。如果数组有多个中心下标

    2024年02月13日
    浏览(43)
  • 【数据结构和算法】寻找数组的中心下标

    Java基础合集 数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列长度 2.1.4 寻找数组中第 k 小的元素 2

    2024年02月04日
    浏览(45)
  • 【C语言】每日一题(寻找数组的中心下标)

    寻找数组的中心下标,链接奉上 ​​​​​​​思路: 依旧是我们的老朋友,暴力循环。 1.可以利用外层for循环,循环变量为数组下标,在循环内分别求出下标左边与右边的sum 2.在边界时讨论, 当下标为左边界(nums[0])时,left sum=0;当下标为右边界(nums[numsSize-1)时,r

    2024年02月13日
    浏览(42)
  • 【LeetCode 75】第十九题(724)寻找数组的中心下标

    目录 题目: 示例: ​分析: 代码+运行结果: 给一个数组,让我们找出一个下标,在这个下标左边的元素总和等于这个下标右边的元素总和. 我们可以把整个数组的总和求出来,然后再从左往右遍历一次数组,遍历的同时将遍历过的数累加记录到一个变量中.若遍历到一个数,总和减去它

    2024年02月14日
    浏览(85)
  • 数据结构 | 寻找二维数组的最大值和对应下标 | C语言代码

    题目:         本题目要求读入M(最大为10)行N(最大为15)列个元素,找出其中最大的元素,并输出其行列值。 输入格式:         输入在第一行中给出行数m和列数n。接下来输入m*n个整数。 输出格式:         输出最大值的行号,列号,值。 输入样例: 2 3 1 2 3 4 5 6 输

    2024年02月05日
    浏览(51)
  • 【LeetCode】每日一题&&两数之和&&寻找正序数组的中位数&&找出字符串中第一个匹配项的下标&&在排序数组中查找元素的第一个和最后一个位置

    ========================================================================= 主页点击直达: 个人主页 我的小仓库: 代码仓库 C语言偷着笑: C语言专栏 数据结构挨打小记: 初阶数据结构专栏 Linux被操作记: Linux专栏 LeetCode刷题掉发记: LeetCode刷题 算法: 算法专栏  C++头疼记: C++专栏 计算机

    2024年02月08日
    浏览(48)
  • LeetCode - LCR 008.长度最小的子数组

    LeetCode - 209. 长度最小的子数组 由于此问题分析的对象是「⼀段连续的区间」,因此可以考虑 「滑动窗口」 的思想来解决这道题。 让滑动窗口满足:从 i 位置开始,窗口内所有元素的和小于target (那么当窗口内元素之和 第⼀次大于等于目标值的时候,就是i 位置开始,满足

    2024年04月27日
    浏览(26)
  • 两种解法解决LCR 008. 长度最小的子数组【C++】

    😄 创作不易,你的点赞和关注都是对我莫大的鼓励,再次感谢您的观看😄

    2024年02月07日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包