日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

334. Increasing Triplet Subsequence

發布時間:2025/3/15 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 334. Increasing Triplet Subsequence 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Given an unsorted array return whether an increasing subsequence of length 3 exists or not in the array.

Formally the function should:

Return true if there exists?i, j, k?
such that?arr[i]?<?arr[j]?<?arr[k]?given 0 ≤?i?<?j?<?k?≤?n-1 else return false.

Your algorithm should run in O(n) time complexity and O(1) space complexity.

Examples:
Given?
[1, 2, 3, 4, 5],
return?
true.

Given?[5, 4, 3, 2, 1],
return?
false.

Credits:
Special thanks to?@DjangoUnchained?for adding this problem and creating all test cases.

Subscribe?to see which companies asked this question

這道題要求一個沒有排序的數組中是否有3個數字滿足前后遞增的關系。最簡單的辦法是動態規劃,設置一個數組dp,dp[i]表示在i位置之前小于或者等于數字nums[i]的數字的個數。我們首先將數組dp的每個元素初始化成1.然后開始遍歷數組,對當前的數字nums[i],如果存在nums[j]<nums[i] (j<i),那么更新dp[i]=max(dp[i],dp[j]+1).如果在更新dp[i]之后,dp[i]的值為3了,那么就返回true,否則返回false。

代碼如下:

  • class Solution {
  • public:
  • bool increasingTriplet(vector<int>& nums) {
  • vector<int> dp(nums.size(),1);
  • for(int i=0;i<nums.size();i++){
  • for(int j=0;j<i;j++){
  • if(nums[j]<nums[i]){
  • dp[i]=max(dp[i],dp[j]+1);
  • if(dp[i]==3){
  • return true;
  • }
  • }
  • }
  • }
  • return false;
  • }
  • };
  • 上述代碼不滿足題目要求的時間復雜度和空間復雜度。另一種思路是遍歷數組,維護一個第一小值min1與第二小值min2,遍歷數組,如果nums[i]<=min1,用nums[i]更新min1,否則如果nums[i]<=min2,用nums[i]更新min2,否則只可能nums[i]同時大于min1與min2,那么說明該數組中能找到長度為3的遞增子數組,返回true。如果一直沒有返回,說明不能找到,直接在最后返回false。
  • class Solution {
  • public:
  • bool increasingTriplet(vector<int>& nums) {
  • int min1=INT_MAX;
  • int min2=INT_MAX;
  • for(auto a:nums){
  • if(a<=min1)
  • min1=a;
  • else if(a<=min2)
  • min2=a;
  • else
  • return true;
  • }
  • return false;
  • }
  • };


  • ?



    來自為知筆記(Wiz)

    轉載于:https://www.cnblogs.com/zhoudayang/p/5246148.html

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的334. Increasing Triplet Subsequence的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。