Code bài sortArrayByParity trên LeetCode bị lỗi


đây là lời giải của em , em không biết thiếu gì mà nó lại báo lỗi , Mong mn giúp đỡ , em cảm ơn ạ !!.

vector<int> sortArrayByParity(vector<int>& A) {
	int n = A.size() ;
	int i=0,j=n-1 ;
	while(i<j){
		while( A[i]%2==0 ) i++ ;
		while( A[j]%2!=0 ) j-- ;
		if(i<j){
            int temp=A[i] ;
		    A[i] = A[j] ;
		    A[j] = temp ;
		    i++;j-- ;
        }
	}
	return A ;       
}

Quan trọng, lỗi là gì?

Cách của bạn: duyệt đối xứng đầu - đuôi.
Cách của họ: tạo vector mới và dùng 2 vòng lặp để thêm số chẵn, sau đó là lẻ.
Đề bài vẫn chấp nhận cách của bạn, nhưng hãy thử làm theo cách của họ.

2 Likes

Câu hỏi: nếu i = A.size() - 1, j = 0, i++, j-- thì A[i], A[j] ở đâu?

3 Likes

i,j sẽ ra khỏi mảng nhưng em có ép đk i<j rồi ạ

Trong vòng lặp while nhỏ không có điều kiện đó :slight_smile:
Dễ thấy là nếu dãy toàn chẵn/lẻ thì sẽ đi một lèo luôn.

4 Likes

Em đã fix được rồi ạ. Cảm ơn mọi nhiều :heart:

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?