【leetcode hot 100 560】和为K的子数组

解法一:用左右指针寻找字串,如果和>k,则减少一个数(left++);如果和<k,则加上一个数(right++)。

java 复制代码
class Solution {
    public int subarraySum(int[] nums, int k) {
        int num = 0;
        int left=0, right=0;
        while(left<nums.length && right<nums.length && left<=right){
            int sum = 0;
            for(int i=left; i<=right; i++){
                sum += nums[i];
            }
            if(sum==k){
                num++;
                if(left==right){
                    // nums[i]=k
                    right++;
                }else{
                    left=right;
                }
            }else if(sum>k){// 不适合含有复数的判断
                left++;
                right = Math.max(left,right);
            }else{
                right++;
            }
        }
        return num;
    }
}

错误原因:该方法不适合于nums有负数的情况

方法二:(枚举)循环i寻找[0, i]中子串和为k的子串。

java 复制代码
public class Solution {
    public int subarraySum(int[] nums, int k) {
        int num=0;
        for(int i=0; i<nums.length; i++){
            int sum=0;
            for(int j=i; j>=0; j--){
                sum += nums[j];
                if(sum==k){
                    num++;
                }
            }
        }
        return num;
    }
}
相关推荐
XFF不秃头10 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
王老师青少年编程10 小时前
csp信奥赛C++标准模板库STL案例应用3
c++·算法·stl·csp·信奥赛·lower_bound·标准模版库
有为少年11 小时前
Welford 算法 | 优雅地计算海量数据的均值与方差
人工智能·深度学习·神经网络·学习·算法·机器学习·均值算法
Ven%12 小时前
从单轮问答到连贯对话:RAG多轮对话技术详解
人工智能·python·深度学习·神经网络·算法
山楂树の12 小时前
爬楼梯(动态规划)
算法·动态规划
谈笑也风生12 小时前
经典算法题型之复数乘法(二)
开发语言·python·算法
智算菩萨12 小时前
强化学习从单代理到多代理系统的理论与算法架构综述
人工智能·算法·强化学习
lhn12 小时前
大模型强化学习总结
算法
Gigavision12 小时前
MMPD数据集 最新Mamba算法 源码+数据集 下载方式
算法
Xの哲學12 小时前
Linux UPnP技术深度解析: 从设计哲学到实现细节
linux·服务器·网络·算法·边缘计算