ネクタイLintCodeアルゴリズムの問題の答え-397.最長上昇連続サブシーケンス

6984 ワード

ネクタイLintCodeアルゴリズムの問題の答え-397.最長上昇連続サブシーケンス
目次
  • 397. 最長上昇連続サブシーケンス
  • 感謝
  • 397.最長上昇連続サブシーケンス
    整数配列(下付き0からn-1、nは配列全体の規模を表す)を指定し、その配列の最長上昇連続サブシーケンスを見つけます.(最長上昇連続サブシーケンスは、右から左または左から右のシーケンスとして定義できます.)
    サンプル1:
    入力:[5,4,2,1,3]出力:4解釈:与えられた[5,4,2,1,3]、その最長上昇連続サブシーケンス(LICS)は[5,4,2,1]であり、4を返す.
    サンプル2:
    入力:[5,1,2,3,4]出力:4解釈:与えられた[5,1,2,3,4]、その最長上昇連続サブシーケンス(LICS)は[1,2,3,4]であり、4を返す.
    public class Solution {
         
        /**
         * @param A: An array of Integer
         * @return: an integer
         */
        public int longestIncreasingContinuousSubsequence(int[] A) {
         
            // write your code here
            if (A.length == 1) {
         
                return 1;
            }
            
            int ret = 0;
            int startRIndex = 0;
            int startDIndex = 0;
    
            for (int i = 1; i < A.length; i++) {
         
                int lNum = A[i - 1];
                int cNum = A[i];
                if (cNum > lNum) {
         
                    // rise
                    if (i - startDIndex > ret) {
         
                        ret = i - startDIndex;
                    }
                    startDIndex = i;
                } else {
         
                    // decline
                    if (i - startRIndex > ret) {
         
                        ret = i - startRIndex;
                    }
                    startRIndex = i;
                }
            }
            
            if (startDIndex < startRIndex) {
         
                // rise
                if (A.length - startDIndex > ret) {
         
                    ret = A.length - startDIndex;
                }
            } else {
         
                // decline
                if (A.length - startRIndex > ret) {
         
                    ret = A.length- startRIndex;
                }
            }
            
            return ret;
        }
    }
    

    原題リンクはこちら
    に感謝
    この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.