01/10/2018, 11:55

Góp ý cho code in những giá trị trùng nhau trong mảng 2 chiều để code được gọn hoặc tối ưu hơn

Dạ chào anh chị và các bạn, em mới học java đang làm bài in ra những giá trị trùng nhau trong mảng hai chiều. Em viết đoạn code sau nhưng cách code còn phức tạp quá, anh chị em có thể góp ý giúp để cho nó gọn hoặc tối ưu lại được không ạ.

                        System.out.println("So trung:  ");
    					int i = 0, j = 0, duplicate = 0;
    					int start = maTran[i][j];		
    					for(i=0;;)
    					{
    						
    						for( j=1;j<cot;j++)
    						{
    							
    							
    								if(start ==  maTran[i][j])
    								{
    									duplicate = start;
    									System.out.print("	" + duplicate);	
    								}if(start !=  maTran[i][j])
    								{
    									continue;
    								}
    								
    								
    						}	
    						if(i<dong && j<cot)		
    							start = maTran[i++][j++];	
    						else
    							break;
    					}
    					if(duplicate==0)
    						System.out.print("Khong co so trung !");
Trần Hoàn viết 14:03 ngày 01/10/2018

Mình nghĩ thuật toán với code ngắn hơn sẽ là:

  1. Đưa tất cả các số trong mảng 2 chiều ban đầu vào 1 mảng 1 chiều
  2. Sort mảng đó
  3. Chạy từ đầu đến cuối, gặp 2 số cạnh nhau mà giống nhau thì in ra rồi tăng biến đếm lên 1, nếu chạy hết mảng mà biến đếm vẫn bằng 0 tức là không có số trùng.

Chưa kể code của em còn sai vì nếu có 2 số bằng nhau và bằng 0 thì chương trình vẫn báo "Khong co so trung !"

Kiet Gis viết 13:55 ngày 01/10/2018

Cám ơn anh nhiều nhé

Bài liên quan
0