ネクタイ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を返す.
原題リンクはこちら
に感謝
この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.
目次
整数配列(下付き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;
}
}
原題リンクはこちら
に感謝
この文章を読むのに時間を費やしてくれてありがとう.本人のレベルは限られているので、何か間違っているところがあれば、指摘してください.皆さん、コメント討論を歓迎します.皆さんが毎日少し進歩することを望んでいます.