👨‍💻

[LeetCode] Top Interview 150: remove-element

2023/12/14に公開

リンク

https://leetcode.com/problems/remove-element/?envType=study-plan-v2&envId=top-interview-150

概要

  • 整数配列numsと、整数valが渡される
  • numsの中身のうちvalではない数を、numsの前方に詰めよう

自分の回答

ポインターとしてkを定義し、valでない値があればnumsの前方に詰める。
最後にvalでない数字の数=kをreturn。

class Solution {
    public int removeElement(int[] nums, int val) {
        int k = 0;
        for(int i=0; i<nums.length; i++) {
            if(nums[i] != val) {
                nums[k] = nums[i];
                k++;
            }
        }

        return k;
    }
}

理想的な解法

Solutionsを漁った感じ、上記の解法で問題ないっぽい。

一応この方法はTwo Pointer Methodと呼ばれてるぽい(尺取り法とも)
ふたつのポインターを使ってin-place[1]に処理をする練習問題みたい。

脚注
  1. 配列などを処理する際に、新しく変数をこしらえることなく、データを直接いじって処理すること。 ↩︎

Discussion