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

可信网站验证多少钱seo网站推广多少钱

可信网站验证多少钱,seo网站推广多少钱,普陀网站建设公司,wordpress 归档文章动态规划,二分查找。 题目 由题,从数组中找一个最长子序列,不难想到,当这个子序列递增子序列的数越接近时是越容易拉长的。从dp上看,当遍历到这个数,会从前面的dp选一个最大的数加上当前数,注意…

动态规划,二分查找。

题目

由题,从数组中找一个最长子序列,不难想到,当这个子序列递增子序列的数越接近时是越容易拉长的。从dp上看,当遍历到这个数,会从前面的dp选一个最大的数加上当前数,注意这里的dp是每遍历到一个数都会加进去。而这里的dp数组同样是用来维护到某个数时的ans,nums数组是做了比较的,因此也有可能内循环时数组中的一些数是没有做更新的,因此最后一步肯定是加上当前的数后再进行一次与更新的dp比较进行选最大。

时间复杂度:O(n^2),空间复杂度:O(n)。

class Solution {public int lengthOfLIS(int[] nums) {int n = nums.length, ans = 0;int[] f = new int[n];for (int i = 0; i < n; i++) {for (int j = 0; j < i; j++) {if (nums[j] < nums[i]) {f[i] = Math.max(f[i], f[j]);}}f[i]++;ans = Math.max(ans, f[i]);}return ans;}
}

接着是更快的,用二分查找的方法,在用二分时用mid去找目标值。而这里每遍历到数组的一个数时,同样可以与tails的数去做比较,注意如果遍历到的数与dp的数做比较时mid在大的一边没有移动过,说明这个数就是大的可以追加到原数组的尾巴,即有位置可以插入。

时间复杂度:O(nlogn),空间复杂度:O(n)。

class Solution {public int lengthOfLIS(int[] nums) {int[] tails = new int[nums.length];int res = 0;for(int num : nums) {int i = 0, j = res-1;//标准二分,当左右指针重叠时再进行一次比较while(i <= j) {int m = (i + j) / 2;if(tails[m] < num) i = m + 1;else j = m - 1;}//这里的i就是目标值tails[i] = num;//更新这个位置的值if(res == i) res++;//说明可以进行扩充//注意每次找到时res肯定会比i多一,因为res从一开始的}return res;}
}

很典型的一道例题,可以用dp的状态维护,找到前面的状态,不过每到一个数都要dp两次。而二分查找目标值的方法,刚好让比目标值小的存到tails数组,比tails数组大的直接追加,以此来更新最长递增子序列。

http://www.dinnco.com/news/25134.html

相关文章:

  • 电子商务网站建设收益举例谷歌浏览器下载app
  • 网站做微信接口吗优化是什么意思?
  • 网站模板化河南网站排名
  • 建筑工程 网络图电脑系统优化软件
  • 网站使用标题做路径永久免费低代码开发平台
  • openshift 做网站国内ip地址 免费
  • 广州火车站刺激广告
  • 专业做酒的网站有哪些网店怎么推广和宣传
  • php做的网站手机能看到对网络营销的认识有哪些
  • 网站未建设完善是什么意思百度指数功能
  • 刚做的单页网站怎么预览网络营销广告名词解释
  • 北京做网站的公司排行爱站网seo综合查询工具
  • 深圳汇网网站建设官方网站营销
  • 力洋网站建设公司百度助手免费下载
  • 重庆网站建设只选承越用广州seo推广获精准访问量
  • 做的网站被公安局查处seo网站推广招聘
  • 给家乡做网站企业网站的作用有哪些
  • 手机制作网页软件下载网站结构优化的内容和方法
  • 可信网站申请百度竞价怎么做开户需要多少钱
  • mc做地图画网站模板建网站价格
  • 网站怎么做404页面教育培训网站大全
  • 邢台网站制作多少钱百度账号人工客服电话
  • 滕州市做网站百度提问登陆入口
  • logo设计大赛网站推广平台的方法
  • 济南网站制作公司整合营销的最高阶段是
  • 网站上做推广手机网页制作软件
  • wordpress 模板 管理安徽网络优化公司排名
  • 安康网站建设公司朋友圈信息流广告投放价格
  • 网店网站建设的步骤过程公司推广宣传文案
  • 贵阳网站制作工具北京seo加盟