27. 移除元素

27. 移除元素

https://leetcode-cn.com/problems/remove-element/description/

package com.test;

import java.util.Arrays;

public class Lesson027 {
    public static void main(String[] args) {
//        int[] nums = {3, 2, 2, 3};
//        int i = removeElement(nums, 3);
//        System.out.println(i);
        int[] nums2 = {4,5};
        int j = removeElement(nums2, 5);
        System.out.println(j);
    }

    public static int removeElement(int[] nums, int val) {
        int length = nums.length;
        // 空数组直接返回
        if (length == 0) {
            return 0;
        }
        // 从头开始循环
        for (int i = 0; i < length; i++) {
            int num = nums[i];
            // 如果某个元素与指定元素相等
            if (num - val == 0) {
                // 计算最后一个与val不相同的元素位置
                for (int j = length - 1; j > 0; j--) {
                    int num_j = nums[j];
                    if (num_j - val == 0) {
                        length--;
                    } else {
                        break;
                    }
                }
                // 替换最后一个不相同的元素
                if(i<length){
                    nums[i] = nums[length-1];
                    nums[length-1] = val;
                    // 还需要缩短一下length
                    length--;
                }
            }
        }
        //System.out.println(Arrays.toString(nums));
        return length;
    }
}

 还是有这样的方法:

原文地址:https://www.cnblogs.com/stono/p/9490376.html