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

重复建设政务网站黑白网站设计

重复建设政务网站,黑白网站设计,英文站用wordpress,成都企业排名给你一个整数数组 nums #xff0c;请你找出一个具有最大和的连续子数组#xff08;子数组最少包含一个元素#xff09;#xff0c;返回其最大和。 子数组 是数组中的一个连续部分。 输入#xff1a;nums [-2,1,-3,4,-1,2,1,-5,4] 输出#xff1a;6 解释#xff1a;连续… 给你一个整数数组 nums 请你找出一个具有最大和的连续子数组子数组最少包含一个元素返回其最大和。 子数组 是数组中的一个连续部分。 输入nums [-2,1,-3,4,-1,2,1,-5,4] 输出6 解释连续子数组 [4,-1,2,1] 的和最大为 6 。 最大子数组和我们今天从递推——记忆化搜索——动态规划来解决本题 递推 假如当前数为1如果前面的sum和是小于0的是不是有 数组[-2,1]的子数组和一定比[1]的子数组和小所以我们就可以推得递推假如你当前元素前面的子数组和是小于零的加上当前的值的和一定比当前元素本身的值要小所以我们取最大的只取本身这个元素所以我们就可以推得关系式 Math.max(nums[i],前面子数组最大和nums[i]); 函数签名 public int dfs(int i,int[] nums){} 函数dfs返回的是当包含索引为i的元素时子数组的最大和通过for循环将0~n-1索引的最大子数组和通过比较找出最大值就是我们所要的结果 int ansnums[0];for(int i1;inums.length;i){ansMath.max(ans,dfs(i,nums));} 递归很明显 因为中间做了很多重复的操作使得超时那么我们怎么样才能避免这样重复的操作发生呢 这个时候我们的记忆化搜索就派上了用场 记忆化搜索 记忆化搜索无非就是维护一个数组将计算后的结果存进数组中等到计算时先去数组中找看是否被计算过如果计算过直接在数组中找如果没有计算计算之后将结果存进数组中以便后续的使用 int[] memo;memonew int[nums.length];Arrays.fill(memo,-1); if(memo[i]!-1){return memo[i];}memo[i]Math.max(nums[i],dfs(i-1,nums)nums[i]); 源码如下 int[] memo;public int maxSubArray(int[] nums) {if(numsnull||nums.length0){return 0;}memonew int[nums.length];Arrays.fill(memo,-1);int ansnums[0];for(int i1;inums.length;i){ansMath.max(ans,dfs(i,nums));}return ans;}public int dfs(int i,int[] nums){if(i0){return 0;}if(memo[i]!-1){return memo[i];}memo[i]Math.max(nums[i],dfs(i-1,nums)nums[i]);return memo[i];} 动态规划 递归是自顶向下那么动态规划就是自底向上通过基础base推这里有个非常高大上的名字就做状态转移方程其实 Math.max(nums[i],dfs(i-1,nums)nums[i]); 其实递推关系式和我们的状态转移方程在某种意义上来讲是一样的 int[] dpnew int[nums.length]; base(当dp[0]时只有索引为0的元素自然而然最大值就是nums[0]) dp[0]nums[0]; 进行状态转移 for(int i1;inums.length;i){dp[i]Math.max(nums[i],dp[i-1]nums[i]);} 源码如下 //动态规划public int maxSubArray(int[] nums) {if(numsnull||nums.length0){return 0;}int[] dpnew int[nums.length];dp[0]nums[0];for(int i1;inums.length;i){dp[i]Math.max(nums[i],dp[i-1]nums[i]);}int ansInteger.MIN_VALUE;for(int i0;idp.length;i){ansMath.max(dp[i],ans); }return ans;} 在这里给大家安利一种比较简便的方法不用你会动态规划、不用你会记忆化搜素、不用你会递归    所谓的正反馈法 假如现在的一个 假如当前你准备要往子数组[-2,1,-3]中加入元素4但是原本这个子数组的值是小于0如果你是这个4本身自身已经很大了在这个弱肉强食的时代你还要带几个拖油瓶去拉低你自己的值即使没有神一样的队友也解决不要猪一样的队友所以不如自己单干正向反馈类似于这个思想 源代码如下 public int maxSubArray(int[] nums) {if(numsnull||nums.length0){return 0;}//正反馈int sum0;int ansnums[0];for(int num:nums){//如果之前的和大于0说明之前的操作对于结果是正反馈if(sum0){sumnum;//之前的和小于0说明之前的操作对于当前结果是负反馈}else{sumnum;}//去中间最大值ansMath.max(sum,ans);}return ans;}
http://www.zqtcl.cn/news/228557/

相关文章:

  • 怎么做百度口碑网站郑州网站设计专家
  • 珠海网络公司网站建设邯郸铸邯网络信息科技有限公
  • 室内设计者联盟官网哈尔滨百度搜索排名优化
  • 网站公司打电话来说做网站天下信息网
  • 汕头制作企业网站百度舆情监测平台
  • 怎样跟网站做优化呢火狐搜索引擎
  • 如何做网站的维护和推广水利网站建设管理汇报
  • 申请网站就是做网站吗怎样凡科建设网站
  • 怎样做吓人网站网页制作成品图
  • 前端的网站重构怎么做做网站用的编程语言
  • 长沙网站设计多少钱一个月百度网盘app下载安装电脑版
  • 你好南京网站网站开发 seo
  • wordpress 文章延时加载seo软件系统
  • 网站建设与运营答案新浪网站首页
  • 网站怎么做关键词库如何建免费的企业网站
  • 跟老外做网站网络系统管理与维护机考
  • 网站推广方案范例江西南昌小程序开发
  • 烘焙类网站开发时代背景ppt素材模板免费下载
  • 如何制作多网页网站广州品牌seo推广
  • 域名怎么解析到网站什么是asp网站
  • 网站开发的税率做网站文案
  • 网站模板上传工具如何介绍自己设计的网页
  • 河北网站建设价格低国内做外单的网站有哪些
  • wordpress Apache升级优化营商环境的意义
  • 单页式网站系统wordpress自定义字段怎么用
  • 南宁网站设计要多少钱修改wordpress中的 功能 小工具
  • 南昌高端网站开发费用表域名价格排行
  • 怎么接网站开发外包中国观鸟记录的网站架构
  • 青海省住房和城乡建设厅的官方网站网站举报能不能查到举报人
  • dw做的网站如何上传云服务器网址生成app一键生成器