首页 > 编程语言 >算法练习 1.寻找中心下标(Find the Middle Index in Array)

算法练习 1.寻找中心下标(Find the Middle Index in Array)

时间:2024-01-15 20:33:52浏览次数:33  
标签:Index 下标 中心 nums int sum Middle 数组 Array

算法练习 1.寻找中心下表(Find the Middle Index in Array)

题目来源

来源:力扣(LeetCode)
https://leetcode-cn.com/problems/find-the-middle-index-in-array/

题目描述

给你一个整数数组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

解题思路

求出数组的总和,然后遍历数组,每次减去当前元素,判断当前元素左右两边的和是否相等,相等则返回当前下标,否则继续遍历,最后返回-1。

int findMiddleIndex(int* nums, int numsSize) {
    int total = 0;
    for (int i = 0; i < numsSize; ++i) {
        total += nums[i];
    }
    int sum = 0;
    for (int i = 0; i < numsSize; ++i) {
        if (2 * sum + nums[i] == total) {
            return i;
        }
        sum += nums[i];
    }
    return -1;
}

标签:Index,下标,中心,nums,int,sum,Middle,数组,Array
From: https://www.cnblogs.com/liu-zongchang/p/17966214

相关文章

  • C. Partitioning the Array
    原题链接直接看代码#include<bits/stdc++.h>usingnamespacestd;inta[200005]={0};intn;intcheck(intk){intm=0;//任何数与零的gcd都是其本身for(inti=1;i<=n-k;i++){m=__gcd(m,abs(a[i]-a[i+k]));//从题干推出来的性质?对于所有abs(a[i]-a......
  • LlamaIndex中的CustomLLM(本地加载模型)
      LlamaIndex中接口基本上调用的是OpenAI,如果想想调用自定义模型可以吗?答案当然是可以的。经过查找找到了自定义大语言模型的简单抽象基类classCustomLLM(LLM)。一.CustomLLM(LLM)源码  只要子类必须实现__init__、_complete、_stream_complete和metadata方法即可......
  • LlamaIndex中的CustomLLM(在线加载模型)
    一.使用Flask将模型封装为REST接口  主要是将complete()和stream_complete()方法封装为REST接口,如下所示:from flask import Flask, request, jsonifyfrom transformers import AutoTokenizer, AutoModelForCausalLMapp = Flask(__name__)class QwenModel:......
  • 小程序之index索引器品牌篇实现与步骤详述
    小程序之index索引器品牌篇实现与步骤详述图例index组件.js//品牌索引列表Component({/**组件的属性列表*/properties:{/**数据*/data:{type:Object,value:{},observer:function(newVal,old......
  • 性能篇:深入源码解析和性能测试arraylist和LinkedList差异!
    嗨,大家好,我是小米!今天我们要谈论的是Java中两个常用的集合类:ArrayList和LinkedList。大家都知道,这两者在新增和删除元素的操作上有一些差异,那么它们究竟在性能上有何表现呢?我们通过深入源码解析和性能测试来一探究竟!ArrayList新增元素到末尾这是最常见的新增元素操作,我们使用......
  • 433. 最小基因变化(Queue使用ArrayList和LinkedList进行声明)
    这道题可以看成一个24叉树。因为基因序列长度固定为8,且每个位置的字母固定是AGCT,可以选择改变的只有3个字母,所以一次最多24种情况。然后检查变化后的结果是否存在bank中(使用hashSet来存储),同时设置一个visited集合来检查是否访问过。classSolution{publicintminMutation(St......
  • 无涯教程-Redis - SELECT index 命令函数
    RedisSELECT命令用于选择具有指定的从零开始的数字索引的DB,新连接始终使用DB0。SELECT-返回值返回OKSELECT-语法以下是RedisSELECT命令的基本语法。redis127.0.0.1:6379>SELECTDB_INDEXSELECT-示例redis127.0.0.1:6379>SELECT1OKredis127.0.0.1:6......
  • MySql 中 SUBSTRING_INDEX()用法
    SUBSTRING_INDEX()函数用于从一个指定分隔符分隔的字符串中提取子串。它返回一个字符串,包含在原始字符串中出现在指定分隔符之前或之后的所有字符。以下是SUBSTRING_INDEX()函数的语法:SUBSTRING_INDEX(str,delim,count)其中,str是要分割的字符串;delim是指定的分隔符;count......
  • 无涯教程-Redis - LINDEX命令函数
    RedisLINDEX命令用于获取存储在键处的列表中索引处的元素。索引从零开始,因此0表示第一个元素,1表示第二个元素,依此类推。负索引可用于指定从列表末尾开始的元素,在这里,-1表示最后一个元素,-2表示倒数第二个,依此类推。LINDEX-返回值返回请求的元素,或者当索引超出范围时为nil。......
  • PHP的array_column()函数用法详解
    在PHP中,经常需要对数组进行处理和操作。有时候,需要从一个多维数组中获取特定的一列数据,这时候就可以使用array_column()函数来实现。本文将详细介绍array_column()函数的用法。一、什么是array_column()函数array_column()是一个PHP函数,用于从一个多维数组中获取指定的一列数据。该......