スポンサーリンク

【LeetCode】283. Move Zeroes 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約2分で読めます。

 

問題

原文

Given an integer array nums, move all 0‘s to the end of it while maintaining the relative order of the non-zero elements.

Note that you must do this in-place without making a copy of the array.

 

Example 1:

Example 2:

 

Constraints:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

 

Follow up: Could you minimize the total number of operations done?

 

内容

整数配列numsが与えられるので、0以外の要素の相対的な順序を維持したまま、全ての0を配列の最後尾まで移動させてください。

 

※正しくない可能性があります。

解答

解答1:two pointer

 

・2つのポインタ(リストのインデックス)を使う。

・slowを0で設定。特定の条件の時のみ進めるので遅い方のポインタになる。

・配列を左端から順に一巡して操作する。その際のループ変数はfast(早い方のポインタ)として、ループの度に1つ進む。

・fast番目の要素が0以外、slow番目の要素が0のときはお互いの位置を入れ替える

・slow番目の要素が0以外のときはslowを一つ進める。

・配列を左端から順に走査していくので、配列内の0以外の要素も左端から順に0と位置が入れ替えられる。0以外の要素の相対的な位置は変わらない。

解答2:Rust

写経

 

 

補足・参考・感想

■補足

■参考

■感想

 

前:977. Squares of a Sorted Array

次:167. Two Sum II – Input Array Is Sorted

LeetCode 解答・解説記事一覧

コメント