劍指offer 之 時間空間效率的平衡

2021-10-05 05:36:15 字數 2721 閱讀 5116

題目描述

把只包含質因子2、3和5的數稱作醜數(ugly number)。例如6、8都是醜數,但14不是,因為它包含質因子7。 習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。

維護三個佇列,選擇三個佇列頭最小的數加入醜數陣列,同時將該最小的數乘以2,3,5放入三個佇列;

public

intgetuglynumber_solution

(int index)

arraylist

res =

newarraylist()

; res.

add(1)

;int i2 =0;

int i3 =0;

int i5 =0;

while

(res.

size()

!= index)

if(min == m3)

if(min == m5)

}return res.

get(res.

size()

-1);

}

題目描述

在乙個字串(0<=字串長度<=10000,全部由字母組成)中找到第乙個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫)

用乙個帶有插入順序的雜湊表 我們選用底層是鍊錶的linkedhashmap裡面的key就是str裡面的字元 value就是字元出現的次數

第二次遍歷 該雜湊表,判斷第乙個value是不是1 是的話直接返回下表

public

static

intfirstnotrepeatingchar

(string str)

else}if

(map.

size()

<=0)

return-1

;for

(int i =

0; i < str.

length()

;i++)}

return-1

;}

題目描述

在陣列中的兩個數字,如果前面乙個數字大於後面的數字,則這兩個數字組成乙個逆序對。輸入乙個陣列,求出這個陣列中的逆序對的總數p。並將p對1000000007取模的結果輸出。 即輸出p%1000000007

輸入描述:

題目保證輸入的陣列中沒有的相同的數字

資料範圍:

對於%50的資料,size<=10^4

對於%75的資料,size<=10^5

對於%100的資料,size<=2*10^5

利用歸併排序的思想

public

int count =0;

public

intinversepairs

(int

array)

process

(array,

0, array.length -1)

;return

this

.count;

}private

void

process

(int

array,

int l,

int r)

int mid = l +

((r - l)

>>1)

;process

(array, l, mid)

;process

(array, mid +

1, r)

;merge

(array, l, mid, r);}

private

void

merge

(int

array,

int l,

int mid,

int r)

while

(p1<= mid)

while

(p2 <= r)

for(

int j =

0;j < help.length;j++

)}

題目描述

輸入兩個鍊錶,找出它們的第乙個公共結點。(注意因為傳入資料是鍊錶,所以錯誤測試資料的提示是用其他方式顯示的,保證傳入資料是正確的)

先看長度 然後 從頭開始走

public listnode findfirstcommonnode

(listnode phead1, listnode phead2)

listnode cur1 = phead1;

listnode cur2 = phead2;

int len1 =

getlength

(cur1)

;int len2 =

getlength

(cur2)

;int i =0;

if(len1 >= len2)

}else

if(len1 < len2)

}while

(cur1 != cur2)

return cur1;

}private

intgetlength

(listnode l1)

return len;

}

劍指offer 之 時間效率

30.最小的k個數 31.連續子陣列的最大和 32.從1到n整數中1出現的次數 33.把陣列排成最小的數 題目描述 陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。例如輸入乙個長度為9的陣列。由於數字2在陣列 現了5次,超過陣列長度的一半,因此輸出2。如果不存在則輸出0。維護乙個計數器...

劍指offer 演算法 (時間空間效率的平衡)

題目描述 把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。解析 根據醜數的定義,醜數應該是另乙個醜數乘以2 3或者5的結果 1除外 因此我們可以建立乙個陣列,裡面的數字是排好...

劍指offer 優化時間與空間效率

把只包含因子2 3和5的數稱作醜數 ugly number 例如6 8都是醜數,但14不是,因為它包含因子7。習慣上我們把1當做是第乙個醜數。求按從小到大的順序的第n個醜數。coding utf 8 class solution def getuglynumber solution self,ind...