LeetCode 303,560,1248 (前缀求和 )

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

给定一个整数数组 nums,求出数组从索引 i 到 j (i ≤ j) 范围内元素的总和,包含 i, j 两点。

示例:

给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()

sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
说明:

你可以假设数组不可变。
会多次调用 sumRange 方法。

Code 303

type NumArray struct {Value []int
}func Constructor(nums []int) NumArray {arr := NumArray{[]int{0}}  // 浪费第一个空间// 1, 2, 3, 4, 5for i, v := range nums {// 1, 3, 6, 10, 15arr.Value = append(arr.Value, v + arr.Value[i])}return arr
}func (this *NumArray) SumRange(i int, j int) int {// i = 0; j = 3 // [3+1] - [0] = 15 - 1 = 14 = 1 + 2 + 3 + 4 return this.Value[j+1] - this.Value[i]
}

560. 和为K的子数组

给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。

示例 1 :

输入:nums = [1,1,1], k = 2
输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。
说明 :

数组的长度为 [1, 20,000]。
数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。

Code 560

func subarraySum(nums []int, k int) int {   res , m , sum := 0, make(map[int]int,0),0m[0] = 1for i:=0;i<len(nums);i++{sum += nums[i]if _,ok := m[sum-k];ok{res += m[sum-k]}m[sum]++}return res
}

1248. 统计「优美子数组」

给你一个整数数组 nums 和一个整数 k。

如果某个 连续 子数组中恰好有 k 个奇数数字,我们就认为这个子数组是「优美子数组」。

请返回这个数组中「优美子数组」的数目。

示例 1:

输入:nums = [1,1,2,1,1], k = 3
输出:2
解释:包含 3 个奇数的子数组是 [1,1,2,1] 和 [1,2,1,1] 。
示例 2:

输入:nums = [2,4,6], k = 1
输出:0
解释:数列中不包含任何奇数,所以不存在优美子数组。
示例 3:

输入:nums = [2,2,2,1,2,2,1,2,2,2], k = 2
输出:16

提示:

1 <= nums.length <= 50000
1 <= nums[i] <= 10^5
1 <= k <= nums.length

Code 1248

这个题,严格来说是动态规划的范畴!
在这里插入图片描述

func numberOfSubarrays(nums []int, k int) int {dp := make([]int, 0)cnt, ret := 0, 0for i := 0; i < len(nums); i++ {cnt++// 每次遇到奇数。记录他前面的偶数个数if nums[i]%2 == 1 {dp = append(dp, cnt)cnt = 0}if len(dp) >= k {ret += dp[len(dp) - k]}}return ret
}

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

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

相关文章

分布式是写出来的(二)

从单机存储进化为接口和存储的分离 概述 接口服务层对外提供REST服务&#xff0c;数据服务层提供数据存储功能。两者之间通过消息队列进行通信&#xff0c;数据服务层的所有数据服务注册dataServer Exchange&#xff0c; 以便client给接口服务层发消息后&#xff0c;接口服务…

分布式是写出来的(五)

数据冗余策略 RS(Reed Solomon Coding)纠删码 在存储系统中&#xff0c;需要采用数据冗余技术来保证数据的可靠性&#xff0c;相比使用多副本复制机外&#xff0c;使用纠删码能够以更小的数据冗余度获得更高的数据可靠性。 RS纠删码将原文件分成n个数据块&#xff0c;同时为这…

java在acm中的一些应用

这两天遇到了一些关于大数据处理的题目&#xff0c;发现Java对于这方面的优势很大。最重要的是代码量小了。于是针对这两天对Java的摸索&#xff0c;写一篇日志。记录一下针对ACM来说常用的Java方面的东西。1、输入首先要想输入需要先包括&#xff1a;[java] view plaincopyimp…

Codeforces 55D Beautiful Number (数位统计)

把数位dp写成记忆化搜索的形式&#xff0c;方法很赞&#xff0c;代码量少了很多。 下面为转载内容&#xff1a; a positive integer number is beautiful if and only if it is divisible by each of its nonzero digits. 问一个区间内[l,r]有多少个Beautiful数字 范围9*…

埃拉托斯特尼筛法 快速查找素数

埃拉托斯特尼筛法快速查找素数时间限制&#xff1a;1000 ms | 内存限制&#xff1a;65535 KB难度&#xff1a;3描述现在给你一个正整数N&#xff0c;要你快速的找出在2.....N这些数里面所有的素数。输入给出一个正整数数N(N<2000000)但N为0时结束程序。测试数据不超过100组…

教主们:虽然这道题我不会,但Ac还是没问题的。

wywcgs&#xff1a;亦称Lord Wu&#xff0c;俗名吴垠&#xff0c;2009级厦门大学智能科学与技术学院研究生&#xff0c;本科就读于哈尔滨工业大学。因其深厚的算法功底与独到的思维方式&#xff0c;被尊为“吴教主”&#xff0c;至今声威犹存。2006年起参加ACM/ICPC竞赛&#x…

引用 Map 数据结构的排序问题

用过map吧&#xff1f;map提供一个很常用的功能&#xff0c;那就是提供key-value的存储和查找功能。例如&#xff0c;我要记录一个人名和相应的存储&#xff0c;而且随时增加&#xff0c;要快速查找和修改&#xff1a; 岳不群&#xff0d;华山派掌门人&#xff0c;人称君子剑 …

程序猿不能错过的十部电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如&#xff0c;大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之酷&#xff0c;甚至反过来能帮助我们程序员更好的理解这些概念。下面就是小编最喜欢的10大电影&#xff0c;它们都在…

goland远程调试Docker

开发环境 goland windows10 Docker centos IP:123.57.43.91 操作原理及流程 goland通过tcp/8080(应该选取2375&#xff0c;登录阿里云开启这个端口&#xff0c;这里临时采用)端口与docker-host通信&#xff0c; 发送docker指令&#xff0c;然后让linux执行&#xff0c;通过d…

紫书的训练计划——一点点来,坚持到底!

先做 第10章3 数论的一点补充。然后趁热温习 10.1 和10.2 &#xff08;可能会有重的题目&#xff09; &#xff08;期望&#xff0c;概率的题目还要过段时间回来补坑&#xff09;然后 第7、8.1&#xff0c;8.2 章做暴力求解和高效算法&#xff08;可以适当的加快步伐&#…

go设计模式思维导图

go设计模式思维导图

【转载】最短路径之Dijkstra算法详细讲解

&#xff11; 最短路径算法 在日常生活中&#xff0c;我们如果需要常常往返A地区和B地区之间&#xff0c;我们最希望知道的可能是从A地区到B地区间的众多路径中&#xff0c;那一条路径的路途最短。最短路径问题是图论研究中的一个经典算法问题&#xff0c; 旨在寻找图&#xf…

Intelij 添加php注释

没有methodParameters()) groovyScript("def result; def params\"${_1}\".replaceAll([\\\\[|\\\\]|\\\\s], ).split(,).toList(); for(i 0; i < params.size(); i) {result * param params[i] ((i < params.size() - 1) ? \\n:)}; return result…

为什么LeetCode过一段时间又不会了

怎么从这个迷宫的左上角走到右下角&#xff1f; 看起来好像很简单&#xff0c;花时间还是可以找得到答案。 看了答案之后可以很清楚&#xff0c;这是正解。 只有一个问题&#xff1a; 我怎么就没立刻想到&#xff1f; 当在看题解或者听别人讲授思路的时候&#xff0c;你就是…

148. 排序链表

148. 排序链表 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4] 示例 2&#xff1a; 输入&#xff1a;head [-1,5,3,4,0] 输出&#xff1a;[-1,0,3,4,5] 示…

HDU 1874 畅通工程续 (Dijkstra , Floyd , SPFA, Bellman_Ford 四种算法)

畅通工程续 题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid1874 Problem Description 某省自从实行了很多年的畅通工程计划后&#xff0c;终于修建了很多路。不过路多了也不好&#xff0c;每次要从一个城镇到另一个城镇时&#xff0c;都有许多种道路方案可以…

vim如何自动补全,ycm配置

vimplus已经很完善了&#xff0c;现在安装已经很容易了。 git clone https://github.com/chxuan/vimplus.git ~/.vimplus cd ~/.vimplus ./install.sh Ubuntu配置vim 更新2018年11月8号 用了一段时间的Ubuntu 18简直太方便了。 三步操作全部配完&#xff01;&#xff01;&a…

Cake -- ACM解决方法

一次生日Party可能有p人或者q人参加,现准备有一个大蛋糕.问最少要将蛋糕切成多少块(每块大小不一定相等),才能使p人或者q人出席的任何一种情况,都能平均将蛋糕分食. Input 每行有两个数p和q. Output 输出最少要将蛋糕切成多少块. Sample Input 2 3 Sample Output 4 …

【转载】ACM中矩阵乘法的应用

copied from 大神s blog 不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中&#xff0c;一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵&#xff0c;得到的结果是一个n行p列的矩阵&#xff0c;其中的第i行第j列位置上的数等于前一…

线程控制(一)

1. 线程执行顺序问题 #include <stdio.h> #include <string.h> #include <pthread.h> #include <stdlib.h> #include <unistd.h>void *thread1(void *); void *thread2(void *);pthread_key_t key;void *thread1(void *arg){int a 1, *tsd &a…