現在有乙個整數陣列,已知乙個數出現的次數超過了一半,請用o(n)
的複雜度的演算法找出這個數。
方法1:hash鍊錶
方法2:使用兩個變數a和
b,其中
a儲存某個陣列中的數,
b用來計數。開始時將
b初始化為0。
遍歷陣列,
如果b=0
,則令a
等於當前數,令b等於
1;如果當前數與a
相同,則
b=b+1;
如果當前數與a
不同,則令
b=b-1。
遍歷結束時,a
中的數就是要找的數。
這個演算法的時間複雜度是o(n)
,空間複雜度為
o(1)
。
public int findnumber(int nums) else if (k == nums[i]) else if (k != nums[i])
}return k;
}
陣列元素迴圈右移問題
乙個陣列a中存有n 0 個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移m 0 個位置,即將a中的資料由 a0a1 an 1 變換為 an man m 1 a0a1 an m 2an m 1 最後m個數迴圈移至最前面的m個位置 如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方法?輸...
陣列元素迴圈右移問題
written by bruth lee in southwest universiy of science and technology.乙個陣列 a中存有 n 個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移 m 個位置,即將 a中的資料由 a 0 a 1 a n 1 變換為 a n ...
陣列元素迴圈右移問題
乙個陣列a中存有n 0 個整數,在不允許使用另外陣列的前提下,將每個整數迴圈向右移m 0 個位置,即將a中的資料由 a 0 a 1 a n 1 變換為 a n m a n 1 a 0 a 1 a n m 1 最後m個數迴圈移至最前面的m個位置 如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方...