1、在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组。

输入:A = [1,0,1,0,1], S = 2
输出:4
解释:
如下面所示,有 4 个满足题目要求的子数组:
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]
[1,0,1,0,1]

这个问题和之前的Leetcode 560:和为K的数组(最详细的解法!!!)非常类似。

可以通过Prefix sum前缀和来求解。假设我们令P[i] = A[0] + A[1] + ... + A[i-1]和P[j] = A[0] + A[1] + ... + A[j-1],那么P[j] - P[i] = A[i] + A[i+1] + ... + A[j-1]。如果P[j] - P[i] == S的话,那么[i,j]就是我们需要的区间。所以我们对于每个j,我们只要计算有多少个i使得P[j] - P[i] == S,这样我们就得到了以P[j]作为右区间并且和为S的区间数。对于A中的每个元素都做同样的处理,最有将所有的结果相加即可。

具体实现上,我们通过hash_map记录P[j]。初始化的时候要注意一个细节,对于dict[0]=1。为什么?因为当P[j]==S时,P[i]=0并且此时我们的result=1。

class Solution:def numSubarraysWithSum(self, A, S):""":type A: List[int]:type S: int:rtype: int"""result, cur_sum = 0, 0sum_dict = {0:1}for num in A:cur_sum += numif cur_sum - S in sum_dict:result += sum_dict[cur_sum - S]if cur_sum in sum_dict:sum_dict[cur_sum] += 1else:sum_dict[cur_sum] = 1return result

from:https://blog.csdn.net/qq_17550379/article/details/83547444

2、给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

1、暴力搜索:

class Solution(object):def longestPalindrome(self, s):""":type s: str:rtype: str"""     maxlen=0 for i in range(len(s)):temp=''for j in range(i+1,len(s)):temp+=s[j]if(temp==temp[::-1]):if len(temp)>maxlen:maxlen=len(temp)tem=tempreturn tem

2、从最长字符串开始判别,这里的每一次循环其实是定义了不同的字符串长度

class Solution(object):def longestPalindrome(self, s):""":type s: str:rtype: str"""n = len(s)for i in range(n):start = 0end = n - iwhile end <= n:sub_string = s[start:end]if sub_string == sub_string[::-1]:return sub_stringstart += 1end += 1

Leetcode 930:和相同的二元子数组相关推荐

  1. LeetCode 930. 和相同的二元子数组(哈希+前缀和)

    文章目录 1. 题目 2. 解题 1. 题目 在由若干 0 和 1 组成的数组 A 中,有多少个和为 S 的非空子数组. 示例: 输入:A = [1,0,1,0,1], S = 2 输出:4 解释: ...

  2. leetcode系列-209.长度最小的子数组

    leetcode系列–第209题.长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [num ...

  3. LeetCode 713 乘积小于K的子数组

    写在前面 一道很艺术的编程题~做学习记录 题目描述 给定一个正整数数组 nums和整数 k . 请找出该数组内乘积小于 k 的连续的子数组的个数. 示例 示例1: 输入: nums = [10,5,2 ...

  4. LeetCode题解(0930):和相同的二元子数组(Python)

    题目:原题链接(中等) 标签:哈希表.双指针 解法 时间复杂度 空间复杂度 执行用时 Ans 1 (Python) O(N)O(N)O(N) O(N)O(N)O(N) 304ms (81.07%) A ...

  5. leetcode算法题--最长湍流子数组

    原题链接:https://leetcode-cn.com/problems/longest-turbulent-subarray/ 相关问题:摆动序列 使用双dp保存状态. up[i]表示如果在i点是 ...

  6. LeetCode 713. 乘积小于 K 的子数组

    713. 乘积小于 K 的子数组 [双指针]s表示前j到i的数字的乘积,当发现乘积大于等于k的时候,就把j向右移动,并且把s除掉个nums[j],这样得到的就是以i结尾的符合要求的数组的最大长度,比这 ...

  7. leetcode算法题--最长公共子数组

    原题链接:https://leetcode-cn.com/problems/maximum-length-of-repeated-subarray/ 相似题目:最长公共子序列 只不过这里必须是连续的, ...

  8. Leetcode 930. 和相同的二元子数组 题解

    题目链接:https://leetcode-cn.com/problems/binary-subarrays-with-sum/ 开心滑动窗口,特判可有可无但是对于神奇样例会快一点.记得双指针的界限要 ...

  9. ⭐算法入门⭐《双指针》中等04 —— LeetCode 713. 乘积小于K的子数组

最新文章

  1. 为您的系统指定一个默认的软件仓库(YUM), 命令行配置自动yum源
  2. Apollo分布式配置中心入门
  3. 能量项链(NOIP 2006 提高组)
  4. 读书笔记:软件人才-管理的艺术
  5. VS2008系统开发背景图片的添加及注意事项
  6. leetcode No.15-16 三数之和相关问题
  7. 2021年前端还好找工作吗?
  8. 解析Integer比较
  9. 如何加强站内搜索功能
  10. pythonclass的使用详情_python 类class基础简明笔记
  11. 一张图看尽 Linux 内核运行原理
  12. 二分查找与 bisect 模块
  13. Git之Github使用(一):Push代码到Github
  14. ApacheCN 翻译/校对/笔记整理活动进度公告 2019.10.18
  15. Fedformer:Frequency Enhanced DecomposedTransformer for long-term series forecasting[还在学习中···]
  16. Rhino7.4软件安装教程
  17. mysql删除密码代码_mysql 用户新建、受权、删除。密码修改
  18. 计算机一直重启无法进入系统怎么办,电脑无限蓝屏重启 电脑一直不断的重启怎么办...
  19. 系统设计基础 负载均衡
  20. 抽象类和接口的相同点与不同点

热门文章

  1. css表格设置行列的颜色,CSS:为表格中的选定行设置颜色
  2. matlab 下采样_Lattice规划与Matlab实现(1)
  3. 异常体系【处理方式:声明异常、捕获异常】
  4. [考研]考研倒计时第8天
  5. [Objective-C语言教程]数据封装(27)
  6. Android8.0适配之一应用图标适配
  7. tomcat 热部署、热加载 精析
  8. 【转载】理解矩阵(一)
  9. Jabber 协议 概述
  10. Flutter CupertinoSlidingSegmentedControl 分段组件使用解析