代码随想录DAY62

这个移动0的问题还是比较重要的 因为涉及到一种思想:快慢指针!

class Solution {

public:

    void moveZeroes(vector<int>& nums) {

        int slow=0,fast=0;

        for(;fast<nums.size();fast++){

            if(nums[fast]!=0){

                swap(nums[slow],nums[fast]);

                    slow++;

            }

        }

        for(;slow<nums.size();slow++){

            nums[slow]=0;

        }

    }

};

class Solution {

public:

    void rotate(vector<int>& nums, int k) {

        int i=0,j=(k%(nums.size())-1);

        if(k==0)

            return;

        reverse(nums.begin(),nums.end());

        reverse(nums.begin(),nums.begin()+j+1);

        reverse(nums.begin()+j+1,nums.end());

       

    }

};

第二题 主要是左旋和右旋的问题 还是要搞清楚!右旋是先反转整个字符串

class Solution {

public:

    int pivotIndex(vector<int>& nums) {

        int sum=0;

        int leftsum=0;

        int rightsum=0;

        for(int i=0;i<nums.size();i++){

            sum+=nums[i];

        }

        for(int i=0;i<nums.size();i++){

            rightsum=sum-leftsum-nums[i];

            if(leftsum==rightsum){

                return i;

            }

            leftsum+=nums[i];

        }

        return -1;

    }

};

!!!                                注意注意注意 不排序不能比较数值                                    !!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值