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