leetcode做题记录0027

leetcode 0027

说明

只是为了记录一下,不求多快,也不深究。

会简要描述思路,代码中不写注释。

如碰到不会做的用了别人代码会在博客中标出。

题目描述

在这里插入图片描述

思路

不说了,跟上题差不多,遍历两边。

class Solution {
    public int removeElement(int[] nums, int val) {
        int len = nums.length;
		if (len < 1) {
			return 0;
		}
		if (len == 1 && nums[0] == val) {
			return 0;
		}
		if (len == 1 && nums[0] != val) {
			return 1;
		}
		int smallIdx = -1;
		int count = 0;
		for (int i = len - 1; i >= 0; i--) {
			if (nums[i] == val) {
				smallIdx = i;
			} else {
				count++;
			}
		}
		if (smallIdx == -1) {
			return len;
		}
		if (count == 0) {
			return 0;
		}
		for (int i = smallIdx, j = smallIdx; i < len && j < len;) {
			if (nums[i] != val) {
				i++;
				continue;
			}
			if (nums[j] == val) {
				j++;
				continue;
			}
			nums[i] = nums[j];
			nums[j] = val;
			i++;
			j++;
		}
		return count;
    }
}
发布了77 篇原创文章 · 获赞 1 · 访问量 2070

猜你喜欢

转载自blog.csdn.net/Paul_1i/article/details/104517765