【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 解答・解説記事一覧

コメント