当前位置: 首页 > wzjs >正文

品牌型网站制作公司wordpress文章内翻页

品牌型网站制作公司,wordpress文章内翻页,网站续费模板,江苏工程招标网学习算法LeetCode热门100题 LeectCode 525 ​​​525.连续数组https://leetcode.cn/problems/contiguous-array/ 1、题目描述 给定一个二进制数组 nums , 找到含有 相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。 2、解题思路 主要思想&#xff0c…

学习算法LeetCode热门100题

LeectCode 525

   ​​​525.连续数组https://leetcode.cn/problems/contiguous-array/

1、题目描述

给定一个二进制数组 nums , 找到含有

相同数量的 0 和 1 的最长连续子数组,并返回该子数组的长度。

2、解题思路

  • 主要思想,把0变成-1,然后计算最大区间中的总和是0,计算每个位置的前缀和时,只需要记录每个位置的前缀和和下标,然后在前缀和一样的时候就可以计算最大的长度
  • 数组 0,0,1,0,0,0,1,1
  • 比如在下标是0到1中【0-1】这个2个数中的前缀和是-2,然后【0-3】的前缀和是-2,满足区间【2-3】这个时候我们计算的是3-1=2,区间是2,
  • 当前缀和相同时, 前一个 i1 后面一个位置开始一直到 i2 的区间是满足题目要求的子数组最大区间的计算就是用当前出现的下标-最早出现的下标
  • 哈希表初始化 当一个数组中的总和刚刚好是0,比如 0,1,0,1
  • 这个时候hash表中有 [-1,0],[0,1],[-1,2],[0,3]
  • 这个时候 我们就是3-1=2 但是不符合,所以必须初始化 所以(0,-1)也可以理解当前缀和相同时, 前一个 i1 后面一个位置开始一直到 i2 的区间是满足题目要求的子数组,0在第一个位置,所以她的前一个位置是-1

3、算法代码

class Solution {public  int findMaxLength(int[] nums) {HashMap<Integer,Integer> hash = new HashMap<>();hash.put(0,-1); //初始化int ret = 0,sum = 0;for (int i = 0; i < nums.length; i++) {sum += nums[i] == 0 ? -1:1;if (hash.containsKey(sum)){int j = hash.get(sum);ret = Math.max(ret,i-j);}else {hash.put(sum,i);}}return ret;}
}

4、结果运行

LeetCode.1314 矩阵区域和

点击 【1314.矩阵区域和】区域和https://leetcode.cn/problems/matrix-block-sum/description/

1、题目描述

给你一个 m x n 的矩阵 mat 和一个整数 k ,请你返回一个矩阵 answer ,其中每个 answer[i][j] 是所有满足下述条件的元素 mat[r][c] 的和: 

2、算法思路

        1、先计算前缀和

要计算i,j的前缀和,就要使用 绿色+橙色 -蓝色(因为重复减去了2次)+当前位置的值

根据前缀和公式 dp[i][j]=dp[i-1][j]+dp[i][j-1]-dp[i-1][j-1]+arr[i-1][j-1] 

        2、使用前缀和

左上角的(x1,y1)和右下角(x2,y2)围的区域是待求区域,

求得公式  res[i][j] = dp[x2][y2]-dp[x2][y1-1]-dp[x1-1][y2]+dp[x1-1][y1-1]

        3、理解坐标映射关系

(1)这里是x1=i-k , y1=j-k,x2=i+k,y2=j+k

(2)看成 x1,x2,y1,y2是待求的边界

(3)边界情况,因为是dp映射到ret,所以需要每个坐标+1

         Math.max(0,i-k)+1,y1 = Math.max(0,j-k)+1;

         Math.min(m-1,i+k)+1,y2 = Math.min(n-1,j+k)+1;

(4)代入公式 res[i][j] = dp[x2][y2]-dp[x2][y1-1]-dp[x1-1][y2]+dp[x1-1][y1-1]

3、算法代码

       

class Solution {public  int[][] matrixBlockSum(int[][] mat, int k) {//获取前缀和矩阵dp[i][j]int m = mat.length,n = mat[0].length;int[][] dp = new int[m+1][n+1];for (int i = 1;i <= m;i++){for (int j = 1;j<=n;j++){dp[i][j] = dp[i-1][j] + dp[i][j-1] -dp[i-1][j-1] +mat[i-1][j-1];}}//开始处理int[][] ret = new int[m][n];for (int i=0;i<m;i++){for (int j = 0; j < n; j++) {//x和y的坐标指的是dp的坐标,有映射关系所以需要+1int x1 = Math.max(0,i-k)+1,y1 = Math.max(0,j-k)+1;int x2 = Math.min(m-1,i+k)+1,y2 = Math.min(n-1,j+k)+1;//最后按照公式代入ret[i][j] = dp[x2][y2]-dp[x1 -1][y2]-dp[x2][y1 -1]+dp[x1 -1][y1 -1];}}return ret;}
}

4、运行结果

http://www.dtcms.com/wzjs/799181.html

相关文章:

  • 苏州网站建设方案策划找人做网站!!! 网站定制开发
  • 济南可信网站中文域名注册平台
  • 设计师个人网站源码软件开发公司好的有哪些
  • 常用的app开发制作上饶网站seo
  • 做网站映射tcpwordpress 删除主题
  • 网站建设后台 手工上传建设银行信用卡网站查询
  • 常州建设网站公司哪家好网站建站什么目录
  • 企业网站推广的方法有dede网站怎么做404页面
  • 基础型网站f式布局网站
  • 网站技术外包公司专业做网站+上海
  • 手机网站建设设计服务上海2023年建设市场放假时间
  • 网站建设 版权归属即将上市的手机
  • 博湖网站建设什么是自适应网站
  • 网站编辑有前途吗网站平台被骗了怎么办
  • 网站改版思路做网站和软件哪个挣钱
  • 一家电子商务网站建设心得秀米官网登录入口
  • 如何远程连接 网站 数据库郑州网站制作公司排名
  • 做黑帽需不需要搭建网站wordpress博客转换小程序
  • 保定网站建设方案维护哈尔滨网站建设推广方案
  • 广州陈村网站建设手机报价
  • 天津服务设计优化建立生育支持政策体系
  • xampp做网站泰安人才网招聘网官网
  • 网站建设app开发销售好做吗专做生存设计的网站
  • 网站开发需求大吗微网站如何做推广
  • 校园网站设计毕业设计ftp中如何找到网站首页
  • 曲靖网站制作一条龙word可以做招聘网站吗
  • 经常做飞机网站网上做家教哪个网站
  • 网站目录设计电子商务网站建设收益举例
  • 厦门专业网站建设wordpress 国际化
  • 朋友说是做彩票网站运营维护网站百度不到