01/10/2018, 09:59
C++ Các bác chỉ lỗi sai chương trình này giúp em với
cho 1 vector ,xóa phần tử chia hết cho k
ví dụ
cho inputArray = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] và k = 3
kết quả là [1, 2, 4, 5, 7, 8, 10].
nhưng khi inputArray =[1,1,1,1] and k=1 thì ra [1].
std::vector<int> extractEachKth(std::vector<int> inputArray, int k) {
int n=inputArray.size();
for(int i=0;i<n;i++)
if(inputArray[i]%k==0)
{
for(int ii=i;ii<n-1;ii++)
inputArray[ii]=inputArray[ii+1];
inputArray.pop_back();
n--;
i=0;
}
return inputArray;
}
Bài liên quan
Cái này bạn phải nắm rõ vòng lặp
for
, bởi sau khi bị xóa,i = 0
, câu lệnh cuối của vòngfor
được thực hiệni++
nên chỉ số bắt đầu từ 1, do đó phải gán lạii=-1
sau khi xóa để chỉ số bắt đầu từ0
Đối với riêng cái đề bài, mình đọc code của bạn thấy khó hiểu.
Mình xin đưa cho bạn 2 ý kiến: