牛客網刷題 陣列數 1 合併有序鍊錶 鍊錶右轉

2021-10-01 15:23:11 字數 1828 閱讀 1812

題目一描述:

給出用數字陣列表示的乙個非負整數,請對該整數加1。

題目一分析:

題目的意思是,將乙個多位數按位置分開放置在陣列中,每個位置上的數字表示該多位數的某一位數。

例如:569,使用int arr = ;表示

**如下:

public

class

solution

//第乙個不為9的數

if(digits[left]

<=

9) digits[left]

=digits[left]+1

;//如果每個數字都為9,則陣列長度+1,最高位置為1

int[

] arr=

newint

[digits.length+1]

; arr[0]

=1;//返回結果有兩種,乙個是原陣列長度(例如:366,499),乙個是原長度+1(例如:999,99等)

return

(left==

0&&digits[left]

>9)

?arr:digits;

}}

題目二描述:

將兩個有序的鍊錶合併為乙個新鍊錶,要求新的鍊錶是通過拼接兩個鍊錶的節點來生成的。

題目二分析:

將有序鍊錶合併,結果返回有序鍊錶,這個題目之前應該刷過。基本思路是利用插入法類似的方法使用兩個指標指向兩個有序鍊錶並且進行組合。

**如下:

public

class

solution

else

index = index.next;

}//left指標指向的鍊錶沒有插入完

while

(left != null)

//right指標指向的鍊錶沒有插入完成

while

(right != null)

//返回新鍊錶

return head.next;

}}

題目二描述:

將給定的鍊錶向右轉動k個位置,k是非負數。

例如:給定1->2->3->4->5->null , k=2,

返回4->5->1->2->3->null。

題目二分析:

根據題目似乎並不能判斷真正地意思,測試幾個case後就知道,相當於乙個有環的鍊錶進行向右移動。當n小於鍊錶的長度時,可以使用乙個窗來進行移動;當n大於鍊錶的長度,多餘的數相當於乙個窗進行移動。例如:

1,2,3,4,5。k=2,可以定義乙個窗大小為3,就是兩個指標相差為3,因為必須前乙個指標指向反轉窗中的前乙個元素,否則鍊錶就不能獲取元素。

**如下:

public

class

solution

right = right.next;

}//固定窗大小後,使其框住最後的元素

while

(right.next!=null)

//最右的指標指向頭部,最左的指標指向空,需要保留左邊指標的下乙個元素,為新的鍊錶頭部

right.next = head;

right=left.next;

left.next = null;

return right;

}}

Leetcode刷題鍊錶之合併有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 由於兩個鍊錶都是有序的,因此相當於固定乙個鍊錶,另乙個鍊錶插入到其中。這裡只要比較兩個鍊錶中節點中值的大小即可。可以先建立乙個新的鍊錶,設定乙...

牛客網刷題 重排鍊錶

將給定的單鏈表 l l0 l1 l ln 重新排序為 l0 ln l1 l l2 l l 要求使用原地演算法,不能改變節點內部的值,需要對實際的節點進行交換。輸入 輸出 線性表 因為鍊錶沒有下表,我們可以現將鍊錶遍歷一遍,儲存到線性表中,然後再重排序 鍊錶中點 鍊錶逆序 合併鍊錶 先查詢鍊錶的中點,...

牛客網OJ題 合併兩個有序鍊錶

輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。定義乙個新的鍊錶,用來存放合併後的鍊錶,並記錄該鍊錶的頭結點。1.判斷list1是否為空,如果為空直接返回list2。同樣,判斷list2是否為空,如果為空直接返回list1。2.當list1和list2同時...