劍指程式設計(6)

2021-08-09 07:40:34 字數 2237 閱讀 5054

一、

輸入乙個複雜鍊錶

(每個節點中有節點值,以及兩個指標,

乙個指向下乙個節點,另乙個特殊指標指向任意乙個節點)

返回結果為複製後複雜鍊錶的head。

(注意,輸出結果中請不要返回引數中的節點引用,否則判題程式會直接返回空)

class randomlistnode 

}public

class

solution

randomlistnode p = new randomlistnode(phead.label);

//由於複製只需要複製鍊錶本身,隨機節點指標引用原來的即可

p.random = phead.random;

p.next = clone(phead.next);

return p;

}}

二、

輸入一棵二叉搜尋樹,將該二叉搜尋樹轉換成乙個排序的雙向鍊錶。

要求不能建立任何新的結點,只能調整樹中結點指標的指向。

class treenode 

}public

class

solution

//遞迴的中序遍歷

convert(prootoftree.left);

if(head == null) else

convert(prootoftree.right);

return head;

}}

三、

輸入乙個字串,按字典序列印出該字串中字元的所有排列。

例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。

輸入描述:

輸入乙個字串,長度不超過9(可能有字元重複),字元只包括大小寫字母。

public

class

solution

//因為可能有字元重複,所以需要set去重

setset = new treeset<>();//treeset保證結果集為字典序

recursion(chs, set, 0);

res.addall(set);

return res;

}public

void

recursion(char chs, setset, int pos)

//策略就是把某個位置可能出現的字元的所有情況列出,並遞迴搜尋下去

for(int i = pos; i < chs.length; i++)

}public

void

swap(char chs, int i, int j)

}

四、

陣列中有乙個數字出現的次數超過陣列長度的一半,請找出這個數字。

例如輸入乙個長度為9的陣列。

由於數字2在陣列中出現了5次,超過陣列長度的一半,因此輸出2。

如果不存在則輸出0。

public

class

solution else

}for(int i : map.keyset())

}return

0; }

}

五、

輸入n個整數,找出其中最小的k個數。

例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4,。

public

class

solution

for(int i = input.length / 2 - 1; i >= 0; i--)

for(int i = input.length - 1; i > input.length - 1 - k; i--)

return res;

}public

void

adjustheap(int input, int pos, int len)

if(input[child] < tmp) else

pos = child;

}input[pos] = tmp;

}}

劍指offer程式設計

二維陣列中的查詢 題目描述 在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。在乙個二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,...

劍指程式設計(11)

一 在乙個長度為n的陣列裡的所有數字都在0到n 1的範圍內。陣列中某些數字是重複的,但不知道有幾個數字是重複的。也不知道每個數字重複幾次。請找出陣列中任意乙個重複的數字。例如,如果輸入長度為7的陣列,那麼對應的輸出是第乙個重複的數字2。public class solution bucket num...

劍指程式設計(13)

一 給定乙個陣列和滑動視窗的大小,找出所有滑動視窗裡數值的最大值。例如,如果輸入陣列及滑動視窗的大小3 那麼一共存在6個滑動視窗,他們的最大值分別為 針對陣列的滑動視窗有以下6個 public class solution pos用於存放最大值的位置 int max 0,pos 0 for int ...