首页 > 其他分享 >leetcode560 和为k的子数组

leetcode560 和为k的子数组

时间:2024-10-31 14:21:20浏览次数:1  
标签:map leetcode560 数组 nums int 哈希 ans 前缀

leetcode560 和为k的子数组

image-20241030144452445

package java2024_10.day30;

import java.util.HashMap;

public class leetcode560 {
    /*思路:前缀和+哈希表
    a[j]-a[i]=k
    即a[i]=a[j]-k
    遍历到下标j的时候,先判a[j]==k,相等就ans++,然后查哈希表中a[j]-k的数的个数,然后把a[j]放入哈希表中
    相当于:
    1.查j前缀和是否等于K
    2.查哈希表是否有前缀和j-i等于k
    3.将j前缀和加入到哈希表中
    */
    public int subarraySum(int[] nums, int k) {
        HashMap<Integer,Integer> map=new HashMap<>();
        int ans=0,m;
        int len=nums.length;
        int[] a=new int[len+1];
        a[0]=nums[0];
        map.put(a[0],1);
        if(a[0]==k) ans++;
        for (int i = 1; i < len; i++) {
            a[i]=a[i-1]+nums[i];
            m=a[i];
            if (m==k) ans++;
            ans+=map.getOrDefault(m-k,0);
            map.put(m,map.getOrDefault(m,0)+1);
        }//a数组储存前缀和
        return ans;
    }
}

标签:map,leetcode560,数组,nums,int,哈希,ans,前缀
From: https://www.cnblogs.com/vastjoy/p/18517671

相关文章

  • 字符串数组转换为整数数组
    在C#中,可以使用Array.ConvertAll方法来将字符串数组转换为整数数组。classProgram{staticvoidMain(string[]args){//案例1://使用Array.ConvertAll方法将字符串数组转换为整数数组//情况1:当确定每个数值......
  • (C语言)数组
    目录一维数组1>.  定义2>. 数组的下标3>. 数组的初始化4>. 计算数组的大小    1)strlen    2)sizeof二维数组1>. 定义2>. 初始化    1)只有一个{}    2)多个{}变长数组数组定义:为了存放多个相同类型的元素,创建了数组;......
  • 记录串口电脑往下发,没有写进数组的问题
    1voidHAL_UART_RxCpltCallback(UART_HandleTypeDef*huart)2{3/*Preventunusedargument(s)compilationwarning*/4UNUSED(huart);5if(RxCnt>=10)6{8RxCnt=0;10//将数组指向的地方的前sizeof内存用0X00替换,将数组初始化......
  • 未排序数组的树层去重
    491.递增子序列reference/*未排序+树层去重之前在进行树层去重时,我们都是先对元素排序,这样如果树层中的元素重复,它们的位置一定是相邻的,因此我们可以通过!st[i-1]来判断树层元素是否重复但现在我们不能对元素进行排序,该如何去重呢?其实也很简单,对于树中的每一层,我们只需......
  • 《贪婪算法实战:寻找最短无序连续子数组的深度解析与实现》
    ......
  • JavaScript 实现对 JSON 对象数组数据进行分页处理
    JavaScript实现对JSON对象数组数据进行分页处理在前端JavaScript中对JSON对象数组进行分页,可以通过以下方式实现:分页函数示例代码假设有一组JSON对象数据,比如一组用户信息:constdata=[{id:1,name:"Alice"},{id:2,name:"Bob"},{id:3,name:"......
  • 2024-10-30:或值至少 K 的最短子数组 I。用go语言,给定一个非负整数数组 nums 和一个整
    2024-10-30:或值至少K的最短子数组I。用go语言,给定一个非负整数数组nums和一个整数k,我们需要判断数组中是否存在一个最短的非空子数组,使得该子数组所有元素的按位或(OR)运算结果至少为k。如果找到了这样的子数组,返回其长度;如果不存在,则返回-1。输入:nums=[1,2,3],k=2。......
  • 代码随想录算法训练营第六天| leetcode242.有效的字母异位词、leetcode349.两个数组的
    1.leetcode242.有效的字母异位词题目链接:242.有效的字母异位词-力扣(LeetCode)文章链接:代码随想录视频链接:学透哈希表,数组使用有技巧!Leetcode:242.有效的字母异位词哔哩哔哩bilibili自己的思路:首先就是对字符串进行分开成一个一个单独的字母,然后使用列表存储这些数据,再对......
  • C语言顺序表(类似数组结构)
    ////CreatedbyAdministratoron2024/10/25.//顺序表结构//#ifndefORDER_TABLE_H#defineORDER_TABLE_H/*声明顺序表的长度*/#defineSize5/***声明顺序表结构体*/typedefstructTable{int*head;intlength;intsize;}table;/***......
  • 更新 state 中的数组
    同对象一样,当你想要更新存储于state中的数组时,你需要创建一个新的数组(或者创建一份已有数组的拷贝值),并使用新数组设置state。在没有mutation的前提下更新数组每次要更新一个数组时,你需要把一个新的数组传入state的setting方法中。为此,你可以通过使用像filter()和map......