1.問題:有1到100的連續整數陣列a,現將其打順序,並拿掉其中乙個數,是找出一種空間複雜度和時間複雜度較小的方法,找到這個數。
2.思路1:空間換時間,申請100個空間的陣列b,初始化為0,然後遍歷一次亂序陣列a, 令b[a[i]] = 1 (0 =< i < 99),在遍歷一次陣列b,若b[j] = 0,則缺少的數即為j。
思路2:時間換空間,不申請額外空間,用複雜度為o(n^2)的方法。
for (i = 1, i <= 100 ++i)
for (j = 0, j < 98; j++)
if a[j] == i;
break;
if (j == 98)
break;
3.思路3.較優解
1)求出1-100的整數和 sum = (1 + 100) * 100 / 2 = 5050;
2)遍歷一次無序陣列,每次用sum - a[i],則最終的sum即為被拿掉的那個數。
51nod 1138 連續整數的和 好題
給出乙個正整數n,將n寫為若干個連續數字和的形式 長度 2 例如n 15,可以寫為1 2 3 4 5,也可以寫為4 5 6,或7 8。如果不能寫為若干個連續整數的和,則輸出no solution。收起輸入1個數n 3 n 10 9 輸出連續整數中的第1個數,如果有多個按照遞增序排列,如果不能分解為若...
刷題筆記46 連續子陣列的最大和
hz偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了 在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如 連續子向量的最大和為8 從第0個開始,到第...
劍指Offer 題42(連續陣列的最大和)
輸入乙個整型陣列,陣列裡有正數也有負數。陣列中乙個或連續的多個整數組成乙個子陣列。求所有子陣列的和的最大值。要求時間複雜度為o n 例如輸入的陣列為,和最大的子陣列為,因此輸出為該子陣列的和18。step1.從頭到尾逐個累加陣列中的每個數字,首先加上第乙個數字,從第二個數字開始累加,依次將累加和儲存...