地址:https://leetcode-cn.com/problems/subarray-sum-equals-k/ 思路:因为是连续子数组,因此比较容易想到“前缀和数组”。 方法一:前缀和数组 Java 代码: public class Solution { public int subarraySum(int[] nums, int k) { int len = nums.length; int[] preSum = new int[len + 1]; preSum[0...
输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明: 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。 PS: 先附上简单一些的 classSolution{publicintsubarraySum(int[] nums,intk){ Map<Integer, ...
前缀和:nums 的第 0 项到 当前项 的和。 每个元素对应一个“前缀和” 遍历数组,根据当前“前缀和”,在 map 中寻找「与之相减 == k」的历史前缀和 当前“前缀和”与历史前缀和,差分出一个子数组,该历史前缀和出现过 c 次,等价于当前项找到 c 个子数组求和等于 k。 遍历过程中,c 不断加给 count,最后...
import java.util.HashMap; /* 560. 和为K的子数组 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例1 : 输入:nums = [1,1,1], k = 2 输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。 说明: 数组的长度为 [1, 20,000]。 数组中元素的范围是 [...
560. 和为K的子数组 难度:简单 ❝ 给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。 示例1 : 代码语言:javascript 复制 输入:nums=[ 1,1,1],k=2输出: 2,[1,1]与[1,1]为两种不同的情况。 说明: 数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, ...
给定一个整数数组和一个整数k,你需要找到该数组中和为k的连续的子数组的个数。 示例1 : 代码语言:javascript 复制 输入:nums=[ 1,1,1],k=2输出: 2,[1,1]与[1,1]为两种不同的情况。 说明: 数组的长度为 [1, 20,000]。 数组中元素的范围是 [-1000, 1000] ,且整数k的范围是 [-1e7, 1e7]...
LeetCode 373、查找和最小的 K 对数字 第九天(周二) LeetCode 217、存在重复元素 LeetCode 349、两个数组的交集 “基于上述题目,体会哈希集合在【判断重复元素】以及【数组去重】上的应用。 ” LeetCode 1、两数之和 LeetCode 219、存在重复元素II
滑动窗口类型的题目经常是用来执行数组或是链表上某个区间(窗口)上的操作。比如找最长的全为1的子数...
利用21题合并两个有序数组的代码,使用for循环进行合并,效率较低;参照第一名的代码,使用分治,改变对数组的处理方法,可以大幅度提高处理效率: 修改后: publicListNodemergeKLists(ListNode[] lists){if(lists==null||lists.length==0)returnnull;returnsort(lists,0, lists.length-1); ...
1 <= k <= 10^5 -10^4 <= arr[i] <= 10^4 思路: 模拟 当k = 1 时, 转化为最大连续子数组和, 注意答案非负 当k = 2 时, 为数组最大前缀和和最大后缀和的和 当k > 2 时, 如果数组的和为正, 需要加上 sum * (k - 2)