DW&LeetCode_day5(23、26、33)
前に書く:
- この時期の気持ちをいくつか話して、それを樹洞として扱ってください。この時期、私は毎日同じことをして、質問を書いたり、英語を学んだり、バグを修正したり、デザインを書いたりしています。実際、日々はそれほど明白ではなく、私はあまりにも退屈です。
オープンソースコンテンツ
目次
研究概要
23.Kの昇順リンクリストをマージする
リンクリストの配列を提供します。各リストは昇順で配置されています。
すべてのリンクリストを昇順のリンクリストにマージして、マージされたリンクリストを返してください。
例1:
入力:リスト= [[1,4,5]、[1,3,4]、[2,6]]
出力:[1,1,2,3,4,4,5,6]
説明:リンクリスト配列次のように:
[
1-> 4->
5、1-> 3->
4、2-> 6
]
それらを順序付けられたリンクリストにマージします。
1-> 1-> 2-> 3-> 4-> 4-> 5-> 6
例2:入力:リスト= []
出力:[]
例3:入力:リスト= [[]]
出力:[]
促す:
k ==リスト.length0
<= k <= 10 ^ 4
0 <=リスト[i] .length <= 500
-10 ^ 4 <=リスト[i] [j] <= 10 ^ 4
リスト[i]按升序排列
リスト[i] .length的总和不超上位10 ^ 4
リンク:トピックリンク回答:
class Solution: def mergeKLists(self, a: List[ListNode]) -> ListNode: res = ListNode(None) cur = res x = [] for i in a: while i: heapq.heappush(x,i.val) i = i.next while x: cur.next = ListNode(heapq.heappop(x)) cur = cur.next return res.next
26.ソートされた配列の重複を削除します
並べ替えられた配列を指定すると、繰り返される要素を削除して、各要素が1回だけ表示されるようにし、削除された配列の新しい長さを返す必要があります。
余分な配列スペースを使用しないでください。入力配列をその場で変更し、O(1)の余分なスペースを追加する必要があります。
例1:
与えられた配列nums = [1,1,2]、
関数は新しい長さ2を返す必要があり、元の配列numsの最初の2つの要素が1、2に変更されています。
新しい長さを超える配列内の要素を考慮する必要はありません。
例2:与えられたnums = [0,0,1,1,1,2,2,3,3,4]、
関数は新しい長さ5を返す必要があり、元の配列numsの最初の5つの要素が0、1、2、3、4に変更されています。
新しい長さを超える配列内の要素を考慮する必要はありません。
説明:
戻り値が整数なのに、出力の答えが配列であるのはなぜですか?
入力配列は「参照」によって渡されることに注意してください。これは、関数内の入力配列の変更が呼び出し元に表示されることを意味します。
内部操作は次のように想像できます。
// numsは「参照」によって渡されます。つまり、実際のパラメーターのコピーを作成しないでください
int len = removeDuplicates(nums);//関数の入力配列の変更は、呼び出し元に表示されます。
//関数によって返される長さに応じて、その長さ内の配列内のすべての要素が出力されます。
for(int i = 0; i <len; i ++){ print(nums [i]); }
リンク:トピックリンク回答:
class Solution: def removeDuplicates(self, a: List[int]) -> int: for i in range(len(a)-1,0,-1): if a[i] == a[i-1]:del a[i] return len(a)
33.回転したソート済み配列を検索
昇順の整数配列numは、事前に不明なポイントでローテーションされます(たとえば、[0,1,2,4,5,6,7]は[4,5,6,7、0,1,2]になる可能性があります。 ])。
配列内のターゲットを検索してください。ターゲット値が配列内に存在する場合はそのインデックスを返し、そうでない場合は-1を返します。
例1:
入力:nums = [4,5,6,7,0,1,2]、target = 0
出力:4
例2:入力:nums = [4,5,6,7,0,1,2]、ターゲット= 3
出力:-1
例3:入力:nums = [1]、ターゲット= 0
出力:-1
促す:
1 <= nums.length <= 5000
-10 ^ 4 <= nums [i] <= 10 ^ 4numsの
各値は一意です
numsは特定のポイントで確実に回転します
-10 ^ 4 <=ターゲット<= 10 ^ 4
リンク:トピックリンク回答:
class Solution: def search(self, a: List[int], target: int) -> int: if target not in a:return -1 return a.index(target)