复习我的算法题目——简单数组操作

49 阅读1分钟

前言

这个是用来记录我的每天一题,顺便写一写每天的一些的感想。今天就从简单的开始讲一道简单题.leetcode.cn/problems/ap…。题目的详情如下,

image.png

思路

首先来说思路吧,其实简单题多数时候只要看看案例就可以了,然后结合案例看一下是否可以直接用模拟的方式就行了。简单的判断方法就是你可以看一下数据的范围,如果数据的范围是10的九次方那就铁定会超时,这种你就要从题目的性质中去发掘有什么点可以去优化的或者说是可以利用的。当然今天这道是不用的,我只是想讲一下比较常见的思考方法(就是我怎么思考的)。这道题(点进去看的同学就可以看到)数据范围只是1000多,那就直接模拟就好了,尝试用代码完成这件事。

代码

`


      
        int left = 0;// 相当于 B
        int right = 0;// 相当于 A
        while (right < length) {
            if (nums[right] != 0) {
                int tmp = nums[right];
                nums[right] = nums[left];
                nums[left] = tmp;
                left++;
            }
            right++;
        }
        return nums;
    

前面完成对应操作就好了,只是后面用一个双指针就行,一个在前面等待不是0的数,一个在后面找。