数组中对应数字向数组头移动,其他相对位置不变

问题遇到的现象和发生背景

lintcode的每日题,测试数据都能正确输出,最后提交用的数组无法得出正确结果
是将数组中与设置相同的数全放到数组前面

问题相关代码,请勿粘贴截图
class Solution {
public:
    /**
     * @param nums: a list of integer
     * @param target: an integer
     * @return: nothing
     */
    void moveTarget(vector<int> &nums, int target) {
        // write your code here
        int i,j,n=0;
        for(i=1;i<sizeof(nums);i++){
            if(nums[i]==target){
                n++;
                for(j=i-1;j>n-1;j--){
                nums[j+1]=nums[j];
                }nums[n]=nums[n-1];
                nums[n-1]=target;
            }
        }
    }
};

运行结果及报错内容

[-10,4,-1,8,10,10,-8,-2,-8,1,-5,3,-9,-6,-6,8,3,-3,-9,2,-6,10,7,4,10,-6,2,3,-6,-7]
10
[10,10,10,-10,4,-1,8,-8,-2,-8,1,-5,3,-9,-6,-6,8,3,-3,-9,2,-6,7,4,10,-6,2,3,-6,-7]
正确答案:[10,10,10,10,-10,4,-1,8,-8,-2,-8,1,-5,3,-9,-6,-6,8,3,-3,-9,2,-6,7,4,-6,2,3,-6,-7],最后一个10未能放到前面

我的解答思路和尝试过的方法
我想要达到的结果

我建议你可以换种思路,从数组下标为1 的开始判断,如果当前下标为i的元素等于目标元素,那么你可以弄个内层循环0到i, nums[k] = nums[k -1],内层循环完成后nums[0] = target