巧用陣列下標
陣列的下標是乙個隱含的很有用的陣列,特別是在統計一些數字,或者判斷一些整型數是否出現過的時候。例如,給你一串字母,讓你判斷這些字母出現的次數時,我們就可以把這些字母作為下標,在遍歷的時候,如果字母a遍歷到,則arr[a]就可以加1了,即 arr[a]++;
通過這種巧用下標的方法,我們不需要逐個字母去判斷。
我再舉個例子:
問題:給你n個無序的int整型陣列arr,並且這些整數的取值範圍都在0-20之間,要你在 o(n) 的時間複雜度中把這 n 個數按照從小到大的順序列印出來。
對於這道題,如果你是先把這 n 個數先排序,再列印,是不可能o(n)的時間列印出來的。但是數值範圍在 0-20。我們就可以巧用陣列下標了。把對應的數值作為陣列下標,如果這個數出現過,則對應的陣列加1。
演算法訓練 審美課 巧用陣列下標!!按位取反
問題描述 審美的歷程 課上有n位學生,帥老師展示了m幅畫,其中有些是梵谷的作品,另外的都出自五歲小朋友之手。老師請同學們分辨哪些畫的作者是梵谷,但是老師自己並沒有答案,因為這些畫看上去都像是小朋友畫的 老師只想知道,有多少對同學給出的答案完全相反,這樣他就可以用這個資料去揭穿披著皇帝新衣的抽象藝術了...
陣列下標越界
原理 因為c語言不會檢測陣列下標,所以如果我們給陣列乙個超出它大小的下標,就會照成陣列越界。如果是想陣列中寫入資料的話,就會造成資料寫入到不屬於陣列的地方,或者說如果讀取資料的話,就會讀取到別的地方的資料。因為陣列位址是自低往高增長,而棧的位址是自高向下降低,所以如果我們將陣列下標根據棧內的空間的分...
陣列下標訪問
q int a 2 3 則a 1 0 和 a 1 1 的值分別是 a a 4 5 b 4 3 c 3 5 d 3 4 a 假設給乙個一維陣列 int a 5 首先要明白 a 和 a 的意思,他們位址值一樣 可以把a理解江蘇的省會南京市 即江蘇省城市排名中的第乙個,對應陣列中的第乙個元素 a理解為江蘇...