陣列元素過半問題

2021-07-12 06:08:04 字數 529 閱讀 8624

現在有乙個整數陣列,已知乙個數出現的次數超過了一半,請用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個位置 如果需要考慮程式移動資料的次數盡量少,要如何設計移動的方...