0
点赞
收藏
分享

微信扫一扫

21天算法训练营

三维控件研究 2022-03-12 阅读 63

day01 双指针

01-删除有序数组中的重复项

import org.junit.Test;

// https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/

public class RemoveDuplicatesCase {
    int removeDuplicates(int[] nums) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        int slow = 0, fast = 0;
        for (fast = slow + 1; fast < nums.length; fast++) {
            if (nums[fast] != nums[slow]) {
                nums[++slow] = nums[fast];
            }
        }
        return slow + 1;
    }

    @Test
    public void test() {
        int[] nums = {1, 1, 2};
//        int[] nums = {0, 0, 1, 1, 1, 2, 2, 3, 3, 4};
        System.out.println(removeDuplicates(nums));
    }
}

02-移除元素

import org.junit.Test;

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

public class RemoveElementCase {
    int removeElement(int[] nums, int val) {
        if (nums == null || nums.length == 0) {
            return 0;
        }
        int slow = 0, fast = 0;
        while (fast < nums.length) {
            if (nums[fast] != val) {
                nums[slow++] = nums[fast];
            }
            fast++;
        }
        return slow;
    }

    @Test
    public void test() {
        int[] nums = {0, 1, 2, 2, 3, 0, 4, 2};
        int var = 2;
        System.out.println(removeElement(nums, var));
    }
}
举报

相关推荐

0 条评论