刷题560. Subarray Sum Equals K


一、题目说明

题目560. Subarray Sum Equals K,给一列整数和一个整数k,找到所有子数组和是k的个数。难度是Medium!

二、我的解答

这个题目第一印象是用dp,很快代码就写好了。然而 Memory Limit Exceeded,其中vector > dp(len+1,vector(len+1,0));

代码如下:

class Solution{
	public:
		int subarraySum(vector& nums,int k){
			int len = nums.size();
			int total = 0;
			vector > dp(len+1,vector(len+1,0));
			for(int i=0;i

三、优化措施

那就一个一计算吧,用dfs:

class Solution{
	public:
		int subarraySum(vector& nums,int k){
			int len = nums.size();
			int total = 0;

			for(int i=0;i& nums,int start,int k){
			int total = 0;
			int sum = 0;
			for(int i=start;i

性能如下:

Runtime: 464 ms, faster than 24.82% of C++ online submissions for Subarray Sum Equals K.
Memory Usage: 9.8 MB, less than 98.67% of C++ online submissions for Subarray Sum Equals K.

相关