首页 > 编程语言 >#yyds干货盘点# LeetCode程序员面试金典:区域和检索 - 数组不可变

#yyds干货盘点# LeetCode程序员面试金典:区域和检索 - 数组不可变

时间:2023-07-09 22:32:44浏览次数:36  
标签:yyds nums int 金典 NumArray sums sumRange LeetCode left

1.简述:

给定一个整数数组  nums,处理以下类型的多个查询:

计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right

实现 NumArray 类:

NumArray(int[] nums) 使用数组 nums 初始化对象

int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )

 

示例 1:

输入:

["NumArray", "sumRange", "sumRange", "sumRange"]

[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]

输出:

[null, 1, -1, -3]

解释:

NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);

numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)

numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1))

numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

2.代码实现:

class NumArray {
    int[] sums;

    public NumArray(int[] nums) {
        int n = nums.length;
        sums = new int[n + 1];
        for (int i = 0; i < n; i++) {
            sums[i + 1] = sums[i] + nums[i];
        }
    }
    
    public int sumRange(int i, int j) {
        return sums[j + 1] - sums[i];
    }
}

标签:yyds,nums,int,金典,NumArray,sums,sumRange,LeetCode,left
From: https://blog.51cto.com/u_15488507/6669928

相关文章

  • LeetCode 207. 课程表
    classSolution{public:boolcanFinish(intn,vector<vector<int>>&pre){if(pre.empty()||pre[0].empty())returntrue;vector<vector<bool>>g(n,vector<bool>(n,false));for(autoq:pre)......
  • LeetCode -- 792. 匹配子序列的单词数
     方法1:利用桶的思想同时匹配所有words中的子串(走路写法)把所有首字母相同的子串放入到一个桶中,然后遍历s,对于首字母为s[i]的单词,若其大小为1则res++,否则删掉s[i],并根据s[i+1]放入新的桶中。c++classSolution{public:intnumMatchingSubseq(strings,vecto......
  • LeetCode 206. 反转链表
    /***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*ListNode(intx):val(x),next(nullptr){}*ListNode(intx,ListNode*next):val(x),next(next......
  • LeetCode -- 764. 最大加号标志
     利用动态规划的思想,把每个格子上下左右连续的1的个数算出来,再从头到尾遍历一遍即可获得答案。c++classSolution{public:intorderOfLargestPlusSign(intn,vector<vector<int>>&mines){vector<vector<int>>up(n+1,vector<int>(n+1,0));......
  • 做题日记:1881. 插入后的最大值(leetcode)
    题目:给你一个非常大的整数n和一个整数数字x,大整数n 用一个字符串表示。n中每一位数字和数字x都处于闭区间[1,9]中,且n可能表示一个负数。你打算通过在n的十进制表示的任意位置插入x来最大化n的数值​​​​​​。但不能在负号的左边插入x。例如,如......
  • LeetCode 200. 岛屿数量
    classSolution{public:boolst[310][310];intdx[4]={0,0,-1,1},dy[4]={-1,1,0,0};intm,n;intnumIslands(vector<vector<char>>&g){intres=0;n=g.size(),m=g[0].size();for(inti=0;i<n;i++)......
  • LeetCode 169. 多数元素
    classSolution{public:intmajorityElement(vector<int>&nums){intcnt=1;intres=nums[0];for(inti=1;i<nums.size();i++){if(nums[i]==res)cnt++;elsecnt--;i......
  • [LeetCode] 2024. Maximize the Confusion of an Exam
    Ateacheriswritingatestwith n true/falsequestions,with 'T' denotingtrueand 'F' denotingfalse.Hewantstoconfusethestudentsby maximizing thenumberof consecutive questionswiththe same answer(multipletruesormultiple......
  • [LeetCode] 2178. Maximum Split of Positive Even Integers
    Youaregivenaninteger finalSum.Splititintoasumofa maximum numberof unique positiveevenintegers.Forexample,given finalSum=12,thefollowingsplitsare valid (uniquepositiveevenintegerssummingupto finalSum): (12), (2+10), ......
  • leetcode-1629-easy
    SlowestKeyYouhaveabombtodefuse,andyourtimeisrunningout!Yourinformerwillprovideyouwithacirculararraycodeoflengthofnandakeyk.Todecryptthecode,youmustreplaceeverynumber.Allthenumbersarereplacedsimultaneously.I......