Leetcode 题解 - 数组与矩阵

文章放置于:https://github.com/zgkaii/CS-Notes-Kz,欢迎批评指正!

数组

1. 移动零

283. Move Zeroes (Easy)

Leetcode / 力扣

For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].
public void moveZeroes(int[] nums) {
   
    int idx = 0;
    for (int num : nums) {
   
        if (num != 0) {
   
            nums[idx++] = num;
        }
    }
    while (idx < nums.length) {
   
        nums[idx++] = 0;
    }
}

2. 最大连续 1 的个数

485. Max Consecutive Ones (Easy)

Leetcode / 力扣

public int findMaxConsecutiveOnes(int[] nums) {
   
    int cur = 0, max = 0;
    for (int n : nums)
        max = Math.max(max, cur = n == 0 ? 0 : cur + 1);
    return max;     
}

3. 加一

66. Plus One(Easy)

Leetcode / 力扣

    public int[] plusOne(int[] digits) {
   
        for (int i = digits.length - 1; i >= 0; i--) {
   
            if (digits[i] < 9) {
   
                digits[i]++;
                return digits;
            }
            digits[i] = 0;
        }
        digits = new int[digits.length + 1];
        digits[0] = 1;
        return digits;
    }

4. 删除排序数组中的重复项

26. Remove Duplicates from Sorted Array(Easy)

Leetcode / 力扣

     /**
     * 双指针法
     * 数组有序,重复的元素一定会相邻。
     */
	public int removeDuplicates(int[] nums) {
   
        if (nums == null || nums.length == 0) return 0;
        int p = 0, q = 1;

        while (q < nums.length) {
   
            if (nums[p] != nums[q]) {
   
                nums[p + 1] = nums[q];
                p++;
            }
            q++;
        }
        return p + 1;
    }

5. 合并两个有序数组

88. Merge Sorted Array(Easy)

Leetcode / 力扣

暴力解法:

    public void merge(int[] nums1, int m, int[] nums2, int n) {
   
        System.arraycopy(nums2, 0, nums1, m, n);
        Arrays.sort(nums1);
    }

双指针:

    public void merge(int[] nums1, int m, int[] nums2, int n) {
   
		int p1 = m - 1, p2 = n - 1, len = m + n - 1;
        
        while (p1 >= 0 && p2 >= 0) {
   
            // 设置指针 p1 和 p2 分别指向 nums1 和 nums2 的有数字尾部,从尾部值开始比较遍历
            // 同时设置指针 len 指向 nums1 的最末尾,每次遍历比较值大小之后,则进行填充
            nums1[len--] = nums1[p1] > nums2[p2] ? nums1[p1--] : nums2[p2--]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值