- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
和为k的子数组 LeetCode 560
和为k的不重复子数组个数(包含不连续):
Example 1:
Input:nums=[1,1,1],k=2 Output:2
Example 2:
Input:nums=[1,2,3],k=3 Output:2
Example 3:
Input:nums=[1,-1,0],k=0 Output:3
c++代码:这个是说相邻两个数求和为3的解
如果数字为[1,3,2],结果就只有1个了。
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
class Solution {
public:
int subarraySum(vector<int>& nums, int k) {
int ans=0,j,temp;
for(int i=0;i<nums.size();i++){
temp=0;
j=i;
while(j<nums.size()){
temp+=nums[j];
if(temp==k){//不能跳出循环,负数可能反转为k,需要遍历完
ans++;
}
j++;
}
}
return ans;
}
int subarraySumOne(vector<int>& nums, int k){
unordered_map<int,int> dp;
dp[0]=1;//nums存在元素刚好等于k的情况
int ans=0,pre=0;
for(auto& n:nums){
pre+=n;
//pre[i]-pre[j-1]=k
//若dp中存在,key为[当前前缀和-k],说明这个之前出现的前缀和,满足
//[当前前缀和-该前缀和==k],它出现的次数,累加给count.
if(dp.count(pre-k)){
ans+=dp[pre-k];
}
dp[pre]++;//若没有存过,则存入,初始值为1.若存在,则value+1
}
return ans;
}
};
int main(int argc,char* argv[]){
vector<int> nums={1,-1,0,1,-1,0};//{1,2,3,1,-1,0};
int k=0;
cout<<Solution().subarraySum(nums,k)<<endl;
return 0;
}
原文链接:https://blog.csdn.net/Jiangtagong/article/details/113837682
调用,返回和为k的子数组的个数,元素不能重复,不连续也可以。
int data[5] = { 1,2,4,2,5 };
//int[] data = { 1,2,3,2,4,5 };
int target = 5;
int data_len = 5;
int res;
res=child_sum(data, target, data_len);
int child_sum(int *data, int target, int data_len) {
int TotalSum = 0;
std::set<int> set_used = { };
std::vector<int> cur_used;
int count = 0;
for (int right = data_len - 1; right >= 0; right--) {
for (int left = right; left >= 0; left--) {
if (!set_used.count(data[left])) {
if (TotalSum + data[left] <= target) {
TotalSum = TotalSum + data[left];
cur_used.push_back(data[left]);
if (TotalSum == target) {
for (vector<int>::iterator it = cur_used.begin(); it != cur_used.end(); it++) {
std::cout << " " << *it << " ";
set_used.insert(*it);
}
std::cout << std::endl;
set_used.insert(data[left]);
count++;
TotalSum = 0;
cur_used.clear();
}
}
}
}
cur_used.clear();
TotalSum = 0;
}
return count;
}
我正在解决以下leetcode问题:。。递归解是平凡的,所以我试着想出迭代解。下面是我的解决方案:。问题是:代码相对冗长,难以阅读。我的想法是跟踪从顶部到当前节点的整个路径。但这与标准DFS不同,因为
我正在解决以下leetcode问题:。。递归的解决方案是微不足道的,所以我试图拿出迭代的解决方案。下面是我的解决方案:。问题是:代码相对冗长,难以阅读。我的想法是跟踪从顶部到当前节点的整个路径。但这与
我正在处理 'Two Sum' problem in Leetcode . 我确信这段代码是正确的,我已经在 Repl 中对其进行了测试,它看起来是正确的,但 Leetcode 给了我一个错误。 这是
我正在研究 leetcode“762. 二进制表示中设置位的质数”,并且我测试了我的代码在 Jupiter Notebook 上运行良好,当我迁移到 leetcode 时,它显示 null 作为最
题干 请写出一个高效的在m*n矩阵中判断目标值是否存在的算法,矩阵具有如下特征: 每一行的数字都从左到右排序 每一行的第一个数字都比上一行最后一个数字大 用例 例如对于下面矩阵: [ [1,
LeetCode Monotone Stack Summary 单调栈小结 所谓的单调栈 Monotone Stack,就是栈内元素都是单调递增或者单调递减的,有时候需要严格的单调递增或递减,根据
第一题: 合并二叉树 LeetCode 617 : 合并二叉树 描述: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠。 你需要将他们合并为一个新的二叉树。合并的
和为k的子数组 LeetCode 560 和为k的不重复子数组个数(包含不连续): 和为k的子数组 LeetCode 560 Example 1: Input:nums=[1,1,1],k=2 Ou
1.题目描述: 难度:简单 描述: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。 字符 数值 I 1 V 5 X
1.题目描述: 难度:简单 描述: 给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。 回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 例如,1
一、题目描述 难道:简单 描述: 给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。 由于在
一、题目描述 难度:简单 描述: 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 “”。 示例 1: 输入:strs = ["flower","flow","flig
一、题目描述 难度:简单 描述: 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1: 输入:l1 = [1,2,4], l2 = [1,3,4
@TOC 题目描述 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序
我已经在 Repl.it 网站上解决了这个问题,但是当我在 LeetCode 上提交代码时,它给出了一个 typeError,我将把它粘贴在这里: Line 29 in solution.js
var merge = function(nums1, m, nums2, n) { //contcating two array let array = nums2.concat(
我正在做以下leetCode问题:https://leetcode.com/problems/add-two-numbers/ 我不确定为什么我的一个测试用例失败了 所以问题是 You are giv
我正在尝试完成 Leetcode 上的 189. 旋转数组问题。这是我写的代码: class Solution(object): def rotate(self, nums, k):
该函数将反向打印链表的节点: void recur(ListNode head) { if(head == null) return; recur(head.next); tm
我正在尝试完成 Leetcode 上的 189. 旋转数组问题。这是我写的代码: class Solution(object): def rotate(self, nums, k):
我是一名优秀的程序员,十分优秀!