一組數中最長連續遞增子序列個數
題意:有一組數,如,1,2,3,-2,4,6,10,求該組數中最長連續遞增子序列的個數,顯然這道題的答案是從-2到10一共4個數,所以結果為4.
解析:這道題最直觀的方法就是用兩個巢狀的迴圈,遍歷的過程中,噹噹前數比上一個數大時,則計數變數加1,否則退出內層迴圈,將計數變數和當前最大連續遞增個數變數比較,當比其大時,重新賦值最大連續遞增個數變數。這種方法的時間複雜度顯然為O(n^2)。
這裡我使用另外一種可以使得時間複雜度降至O(n)的方法:(結合程式碼和註釋應該可以看懂,好睏,就不解釋了╮(╯▽╰)╭)
java程式碼如下:
import java.util.Random; public class SlopeUp { public static void main(String[] args) { int count=30;//測試30個數據 int[] nums=new int[count]; Random random=new Random(); for(int i=0;i<count;i++){ nums[i]=random.nextInt(100); System.out.print(nums[i]+" "); } System.out.println(); new SlopeUp().process(nums); } private int[] a; //a[i]表示從開始到i最長連續遞增子序列個數,最後的結果為:a[a.length-1] private int[] b; //b[i]表示到當前i位置有多少個連續遞增個數,如-1,2,4,0,3 則b[2]=3;b[4]=2 public void process(int[] nums){ a=new int[nums.length]; b=new int[nums.length]; for(int i=1;i<nums.length;i++){ if(nums[i]>nums[i-1]){ b[i]=b[i-1]+1; if(b[i]+1>a[i-1]){ System.out.println("The End Number Is:"+nums[i]); a[i]=b[i]+1; }else{ a[i]=a[i-1]; } }else{ a[i]=a[i-1]; } } System.out.println(a[a.length-1]); } }
相關推薦
一組數中最長連續遞增子序列個數
題意:有一組數,如,1,2,3,-2,4,6,10,求該組數中最長連續遞增子序列的個數,顯然這道題的答案是從-2到10一共4個數,所以結果為4. 解析:這道題最直觀的方法就是用兩個巢狀的迴圈,遍歷的過程中,噹噹前數比上一個數大時,則計數變數加1,否則退出內層迴圈,將計數變數
習題3.4 最長連續遞增子序列(20 分)浙大版《數據結構(第2版)》題目集
space align font list 格式 ott mar 不能 第一次 給定一個順序存儲的線性表,請設計一個算法查找該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入
7-7 最長連續遞增子序列(20 分) 普通STL解出
這道題我看了一下 決定寫。 在寫之前網上看到很多高手的題解,深表敬意。 只是我想用STL來完成一下這道題。 7-7 最長連續遞增子序列(20 分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,
資料結構-最長連續遞增子序列
7-9 最長連續遞增子序列 (20 分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數n(≤105);第2行給出n個整數,其間
最長連續遞增子序列(java)
給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數n(≤105);第2行給出n個整數,其間以空格分隔。 輸出格式:
5-3 最長連續遞增子序列 (20分)
5-3 最長連續遞增子序列 (20分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(
7-7 最長連續遞增子序列(20 分)
7-7 最長連續遞增子序列(20 分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數n(≤105);第2行給
浙大版《資料結構》習題3.4 最長連續遞增子序列(20 分)
給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數n(≤105)n(≤105);第2行給出n個整數,其間
習題3.4 最長連續遞增子序列(20 分)
#include<stdio.h> int main() { int n,i=0; scanf("%d",&n); int num[100001]={0,0,}; while(n-->0) scanf("%d",&
天梯賽2 重現5-4 最長連續遞增子序列
原題(20分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數nnn(≤105\le 10^5≤105);第2
5-2 最長連續遞增子序列
給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數nnn(≤105\le 10^5≤105);第2行給出nnn個整數
5-1 最長連續遞增子序列
#include <stdio.h> #define MAXSIZE 1000001 ///MAXSIZE大於1000000(題目要求的數值)是為了避免特殊情況溢位 typedef int ElementType; struct LNode { ElementType Data[MAXSI
習題3.4 最長連續遞增子序列
習題3.4 最長連續遞增子序列(20 分) 給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(
最長連續遞增子序列
解題思路: 遍歷一遍,儲存一個全域性的最大長度,複雜度為O(n) #include<iostream> #include <vector> using namespace st
最長連續遞增子序列(部分有序)
題目:(1,9,2,5,7,3,4,6,8,0,)中最長的遞增子序列為(3,4,6,8)。 程式碼: public class 最長遞增子序列 { public static void main(String[] args) { int []arr = {1,0,2,5,7,3,4,6
pta 習題集 5-5 最長連續遞增子序列 (dp)
給定一個順序儲存的線性表,請設計一個演算法查詢該線性表中最長的連續遞增子序列。例如,(1,9,2,5,7,3,4,6,8,0)中最長的遞增子序列為(3,4,6,8)。 輸入格式: 輸入第1行給出正整數nn(≤105≤105);第2行給出nn個整數,其間以空格分隔
數組中最長的升序子序列(動態規劃問題)
ace dia mic enc namespace 進行 strong main log The longest Increasing Subsequence (LIS) 給定一個序列,找到這個序列的一個最長的子序列,使得子序列的所有元素是升序的,且元素之間的相對位置不變
leetcode674+最長連續遞增子串,直接暴力
https://leetcode.com/problems/longest-continuous-increasing-subsequence/description/ class Solution { public: int findLengthOfLCIS(vector<i
Longest Increasing Subsequence(最長連續遞增子系列)
For a given sequence A = {a0, a1, ... , an-1}, find the length of the longest increasing subsequnece (LIS) in A. An increasing subsequence
在一個亂序的陣列中找到最長的遞增子序列
這個題是牛客上左程雲講其他俄國沙皇問題是提及到的一個演算法原型。程式碼中給出了兩個思路。時間複雜度分別為 N^2 和 NlogN,原始碼中沒有給出註釋,自己照著思路又重新捋了遍程式,稍微加了點註釋,方便理解。 原題目的講解在牛客網公開課http://www.nowcoder