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

网站建设与维护的案例襄阳seo推广

网站建设与维护的案例,襄阳seo推广,一个网站有多个域名,系统开发板价格Day28122.买卖股票的最佳时机II力扣题目链接给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易…

Day28

122.买卖股票的最佳时机II

力扣题目链接

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。

设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。

注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。

思路

  • 对[7,1,5,3,6,4]举例分析,第二天买入,第三天卖出;第四天买入,第五天卖出这样利润最高,为7

  • 利润是什么?最终利润是可以分解的

  • 假如第0天买入,第3天卖出,那么利润为:prices[3] - prices[0]。

  • 相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。

  • 思路是这样的,我们可以设置一个新数组profit用来标记原数组相邻两个元素的差,profit = [-6 4 -2 3 -2],元素为正数的地方这两个时间点间持有股票有收益,可以在区间两侧把股票卖出

  • 因此最大利润其实就是profit数组正数元素的和;如果没有正数元素,说明一直在跌,利润就是0

  • 其实我们需要收集每天的正利润就可以,收集正利润的区间,就是股票买卖的区间,而我们只需要关注最终利润,不需要记录区间

  • 那么只收集正利润就是贪心所贪的地方!

  • 局部最优:收集每天的正利润,全局最优:求得最大利润

  • 时间复杂度O(n),空间复杂度

代码

class Solution {public int maxProfit(int[] prices) {int[] profit = new int[prices.length - 1];//新建一个profit数组int res = 0;for (int i = 0; i < profit.length; i++) {profit[i] = prices[i + 1] - prices[i];//计算profit数组每个元素值if (profit[i] > 0) res += profit[i];//如果大于零,就加到res中}return res;}
}
//优化,不需要设置新数组
class Solution {public int maxProfit(int[] prices) {int res = 0;for (int i = 0; i < prices.length - 1; i++) {res += Math.max(0,prices[i + 1] - prices[i]);}return res;}
}

55. 跳跃游戏

力扣题目链接

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

判断你是否能够到达最后一个位置。

思路

  • 我们想看能不能到达最后一个位置,其实就是考虑一个覆盖度,能不能覆盖到最后一个元素,如果可以覆盖到,不用管怎么跳的,肯定能跳到

  • 问题转化为跳跃覆盖范围究竟可不可以覆盖到终点

  • 所以我们遍历数组,注意不是全部遍历完,因为你全部遍历完了,更新的时候一定能走到最后一个元素,我们只遍历0到coverRange这一部分,每遍历一个元素对coverRange进行更新

  • 一旦发现能走到最后一个元素位置,就退出循环,因为如果不退出的话,coverRange变大数组会越界

  • 如果循环结束了还没有返回,那说明走不到最后一个元素的位置,返回false即可

  • 贪心算法局部最优解:每次取最大跳跃步数(取最大覆盖范围),整体最优解:最后得到整体最大覆盖范围,看是否能到终点

  • 时间复杂度O(n),空间复杂度O(1)

  • 这个题注意不能全力跳,因为可能会错失使得覆盖范围变大的一些元素

代码

class Solution {public boolean canJump(int[] nums) {int coverRange = 0;//最开始只能覆盖0位置元素for (int i = 0; i <= coverRange; i++) {//只遍历到coverRangecoverRange = Math.max(coverRange,nums[i] + i);//每次对能覆盖的范围进行更新if (coverRange >= nums.length - 1) return true;//如果某次发现能走到最后一个位置了就赶紧返回,防止下标越界}return false;//循环结束还没有返回,说明走不到最后一个位置,返回false}
}

45.跳跃游戏II

力扣题目链接

给定一个非负整数数组,你最初位于数组的第一个位置。

数组中的每个元素代表你在该位置可以跳跃的最大长度。

你的目标是使用最少的跳跃次数到达数组的最后一个位置。

思路

  • 我们要找到能跳到终点位置的最小次数

  • 使用curCover来记录这一步能覆盖的最大范围,使用nextCover来记录下一步能覆盖的最大范围

  • 遍历数组,每遍历一个元素都对nextCover进行更新,如果遍历到这一步能覆盖的最大范围了,就是curCover了,那就要看看有没有到达终点,如果到达了就直接break返回res

  • 如果到达这一步最大覆盖范围但还没有到达终点,那这一步肯定跳不到了,就进行更新,给它加加油,再继续遍历

代码

class Solution {public int jump(int[] nums) {int curCover = 0;int nextCover = 0;int res = 0;for (int i = 0; i < nums.length; i++){nextCover = Math.max(nextCover,nums[i] + i);//不断进行遍历,更新下一步能覆盖的范围if (i == curCover){//走到了这一步覆盖范围的终点if (i == nums.length - 1) break;//如果到了末尾,就breakres++;//没有到,步数加一curCover = nextCover;//更新curCover,看下一步能不能到}}return res;}
}
http://www.dinnco.com/news/39787.html

相关文章:

  • 深圳做宣传网站的公司宁波seo排名优化价格
  • 网站怎么设置为可信任网站建站系统主要包括
  • 怎样免费建立网站中国经济网人事
  • 深圳做网站的公司哪家好免费推广软件
  • 合肥做网站工作室关键词推广计划
  • 空间主机 建网站搜狗搜索引擎入口
  • 网站防止挂马应该怎么做电子商务seo是什么意思
  • 网站建设图片手机现在推广一般都用什么软件
  • 网站配置域名这样做长沙seo优化首选
  • 企业管理软件的发展趋势seo怎么提升关键词的排名
  • 嘉兴信息网站网络营销与传统营销有哪些区别
  • 香港公司谷歌seo博客
  • 免费下载网站有哪些百度打车客服电话
  • 国内优秀企业网站windows优化大师如何卸载
  • 滕州做网站百度收录查询接口
  • 从哪里可以建公司网站适合seo的建站系统
  • 给装修公司做推广的网站企业网站建设的步骤
  • 沈阳网站建设公司企业网站代运营
  • 贵阳企业免费建站搜索关键词优化
  • 做网站运营要了解哪些百度如何收录网站
  • 如何注册www 网站友链查询站长工具
  • 青岛网络建站网站推广汕头seo网络推广
  • 高端网站开发多少钱博客程序seo
  • 网站建设基础教程广州网站建设方案维护
  • 搜索网站开发背景淘宝seo推广优化
  • 北京网站建设公司东为google搜索引擎入口 镜像
  • 企业做网站的步骤与做网站注意事项关键字排名优化工具
  • 上海建筑设计院有限公司停工移动端关键词优化
  • 西藏自治区交通厅公路基本建设工程质量监督站网站重庆森林讲的什么内容
  • 用什么软件做网站交互效果杭州seo网站优化