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

广东省建设业协会网站建筑公司名字大全20000个

广东省建设业协会网站,建筑公司名字大全20000个,学网络技术的出来干什么,网页制作流程不包括题目&#xff1a; 给你一个整数数组 nums &#xff0c;判断这个数组中是否存在长度为 3 的递增子序列。 如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k &#xff0c;使得 nums[i] < nums[j] < nums[k] &#xff0c;返回 true &#xff1b;否则&#xff0c;…

题目:

给你一个整数数组 nums ,判断这个数组中是否存在长度为 3 的递增子序列。

如果存在这样的三元组下标 (i, j, k) 且满足 i < j < k ,使得 nums[i] < nums[j] < nums[k] ,返回 true ;否则,返回 false 。

示例 1:

输入:nums = [1,2,3,4,5]
输出:true
解释:任何 i < j < k 的三元组都满足题意

示例 2:

输入:nums = [5,4,3,2,1]
输出:false
解释:不存在满足题意的三元组

示例 3:

输入:nums = [2,1,5,0,4,6]
输出:true
解释:三元组 (3, 4, 5) 满足题意,因为 nums[3] == 0 < nums[4] == 4 < nums[5] == 6

提示:

  • 1 <= nums.length <= 5 * 105
  • -231 <= nums[i] <= 231 - 1

思路:

对于这个题有三个方法可以解决,但是其中有两个是会被判定为超时的

方法一:暴力枚举法:使用三个for循环,但这样会超时

        int len=nums.size();vector<int>res(len);vector<int>l(len),r(len);for(int i=0;i<len-2;i++){for(int j=i+1;j<len-1;j++){if(nums[i]<nums[j]){for(int m=j+1;m<len;m++){if(nums[j]<nums[m]){return true;}}}else continue;}}return false;

方法二:双指针

思路:比如当前所在位置是i,所代表的数字为b,那么有一个指针在其左侧,找到左侧最小的数a,另一个指针在右侧,找到右侧最大的数c,如果a<b<c成立,则返回true,否则的话返回false,这个思路是没有问题的,关键在于实现的方式

起初,使用了两个内嵌for循环,还是超时

        for(int i=0;i<len;i++){r[i]=nums[i];l[i]=nums[i];}for(int i=0;i<len;i++){for(int j=0;j<i;j++){l[i]=(l[i]>nums[j])?nums[j]:l[i];}for(int j=i+1;j<len;j++){r[i]=(r[i]<nums[j])?nums[j]:r[i];}}for(int i=0;i<len;i++){if(l[i]<nums[i]&&nums[i]<r[i]){return true;}}return false;

后来看了官方题解,发现思路是一样的,但是他实现的时间复杂度仅需O(n)

 我觉得他的实现方式类似于动态规划,

eg:l[i]肯定是在l[i-1]和nums[i-1]中选择一个较小的,因为l[i-1]代表的就是第i-1个元素值左边最小的数字了,只需要和第i-1个元素值比较一下,选取那个更小的就是第i个元素左侧最小的值了

实现代码为(此处为官方题解,自己写的找不到了,,,):

class Solution {public boolean increasingTriplet(int[] nums) {int n = nums.length;if (n < 3) {return false;}int[] leftMin = new int[n];leftMin[0] = nums[0];for (int i = 1; i < n; i++) {leftMin[i] = Math.min(leftMin[i - 1], nums[i]);}int[] rightMax = new int[n];rightMax[n - 1] = nums[n - 1];for (int i = n - 2; i >= 0; i--) {rightMax[i] = Math.max(rightMax[i + 1], nums[i]);}for (int i = 1; i < n - 1; i++) {if (nums[i] > leftMin[i - 1] && nums[i] < rightMax[i + 1]) {return true;}}return false;}
}

还有一种更为简单的是贪心算法,就是假设一定会有第一小和第二小的数字,初始化时分别将其设为first=nums[i] ,second=INT_MAX(别忘了需要加#include<climits>);遍历数组,如果当前值比second大,那说明它是目前第三小的数字,找到符合要求的答案,返回true即可。否则如果当前值比first大,那说明第二小的数字应是当前值,即second=nums[i],再否则的话,如果那说明他目前是第一小的数字,则应first=nums[i]

具体实现代码为:

 int len = nums.size();if (len < 3) {return false; // 如果数组长度小于 3,直接返回 false}int first = nums[0]; // 初始化第一个元素int second = INT_MAX; // 初始化第二个元素为最大值for (int i = 1; i < len; i++) {if (nums[i] > second) {return true; // 找到递增三元组} else if (nums[i] > first) {second = nums[i]; // 更新第二个元素} else {first = nums[i]; // 更新第一个元素}}return false; // 未找到递增三元组

 

 


文章转载自:

http://DF9QzO8o.cwyfs.cn
http://XrnHDdj8.cwyfs.cn
http://3x1gmiSw.cwyfs.cn
http://iTqpOwnk.cwyfs.cn
http://7oIfMnZy.cwyfs.cn
http://UxJA2UjG.cwyfs.cn
http://ytrJb0x4.cwyfs.cn
http://0jxoHU5m.cwyfs.cn
http://gxGMMBHe.cwyfs.cn
http://mXv1Xq4e.cwyfs.cn
http://dA0Kmbaz.cwyfs.cn
http://32SQCf20.cwyfs.cn
http://7BgDU8zK.cwyfs.cn
http://gJfmjAD7.cwyfs.cn
http://Te5LXej4.cwyfs.cn
http://UdlyMWj6.cwyfs.cn
http://EquhGGgB.cwyfs.cn
http://LYqjqDg7.cwyfs.cn
http://BnCYCQwN.cwyfs.cn
http://qjITIg8A.cwyfs.cn
http://YVZE4dS5.cwyfs.cn
http://tMI9H3Ee.cwyfs.cn
http://I4NatKFN.cwyfs.cn
http://m1XrkcMe.cwyfs.cn
http://IX84rtCj.cwyfs.cn
http://09nwRnoq.cwyfs.cn
http://5sig3Qh2.cwyfs.cn
http://UlCPYfrf.cwyfs.cn
http://6c9e0D4k.cwyfs.cn
http://bSeJKs0Z.cwyfs.cn
http://www.dtcms.com/wzjs/648397.html

相关文章:

  • 杭州企业网站设计制作怎么自己用手机做网站
  • 用php做的网站人才市场招聘网站
  • 合肥企业网站网站开发需要的编程软件
  • 专业网站制作软件saas智能营销云平台
  • 赣州房产网站建设国外建站程序
  • 青浦专业做网站公司2022有创意的广告
  • 网站建设一般步骤遵义网站制作教程
  • 使用nas建设网站专业团队电影
  • 商城网站程序微商系统软件开发
  • 网站整体架构php 免费企业网站
  • 网站app公众号先做哪个比较好中国化学第九建设公司网站
  • 山东网页制作网站html5网站app开发
  • 郑州高新区建设环保局网站网页设计考研院校
  • 招聘信息网站建设怎么做公司网站
  • 一家专门做动漫的网站在网上做软件挣钱的网站
  • 网站建设公司制作网站Net网站开发多少钱
  • 广州骏域网站建设专家做网站的业务逻辑
  • 自己如何建设一个彩票网站微信企业app手机下载安装
  • 山东德州做网站丹东发布最新通告
  • 如何用discuz做网站山东省建设厅注册中心网站
  • 域名制作网站吗建自己的网站做外贸
  • 网站栏目描述怎么写深圳网站建设 名片设计 网站管理
  • 网站建设设计公elementor wordpress
  • 一般网站建设都用什么字体织梦如何做二级网站
  • 沈阳做网站多少钱西安网站建设的费用
  • 广州市官网网站建设平台郑州网站优化软件
  • 网站建设全部代码免费网站建设有哪些
  • 无忧seo青岛seo结算
  • 中国做的电脑系统下载网站好什么网站能免费
  • 网站右侧浮动导航成都网站优化步骤