Tìm số đầu tiên xuất hiện hai lần trong mảng sao cho vị trí của số đó ở lần xuất hiện thứ hai là nhỏ nhất

Có bài tập lập trình m nghĩ mãi không ra mong mọi người giúp đỡ

Cho một mảng a chỉ chứa các số từ 1 tới a.length, hãy tìm số đầu tiên xuất hiện hai lần trong mảng thỏa mãn: vị trí của số đó ở lần xuất hiện thứ hai là nhỏ nhất.
Tức là, nếu có nhiều số xuất hiện hai lần trong mảng, thì trả về số thỏa mãn vị trí xuất hiện lần thứ hai của nó nhỏ hơn vị trí xuất hiện lần thứ hai của mọi số khác. Nếu không có số nào như vậy, trả về số −1

1 Like

Bài test phỏng vấn trên codefight à?

k bọn mình làm bài nhóm trên này nghĩ mãi k ra bạn à giúp mình vs

Bài này hồi ấy mình đọc phát nghĩ ra luôn, dùng List<int>, nhưng mà đến tầm test 14 thì phải, không qua được do quá thời gian, sau nghĩ thêm cách này thì pass.

1 Like

bạn giải thích cho mình vs mình đọc chưa hiểu lắm thank bạn mong đc giúp đỡ mình mới học lập trình

Bài này khó, nên mình nghĩ là nói luôn, gợi ý lằng nhằng lắm.

  • Input là a
  • b là một mảng gồm các số từ 1 đến a.length, b[i] == i + 1
  • cho vòng for chạy từ đầu đến cuối mảng a
  • Nếu b[a[i] - 1] != 0 thì b[a[i] - 1] = 0, tức là đánh dấu rằng số b[a[i] - 1] này đã xuất hiện 1 lần
  • Nếu b[a[i] - 1] == 0 tức là số này đã xuất hiện 1 lần rồi, lần này là lần thứ 2, return luôn số đó
  • Nếu không có số nào xuất hiện 2 lần thì vòng for sẽ chạy hết được, lúc này return -1
1 Like

code của bạn là C# à bạn có thể code bằng c đc k

Ban đã làm đc nhiều bài tập trên đấy chưa ạ cho mình tham khảo các bài bạn làm mới thực sự mình còn kém

Mình không học C nên cũng chịu luôn, viết đại ra đây mong là nó đúng :joy:

int firstDuplicate(int[] a, int n)
{
    int* b = (int*)malloc(n*sizeof(int));
    int i;
    for (i = 0; i < n; i += 1)
        b[i] = i + 1;
    for (i = 0; i < n; i += 1)
        if (b[a[i] - 1] == 0)
            return a[i];
        else
            b[a[i] - 1] = 0;
    return -1;
}
1 Like

Xin lỗi do mình comment lạc đề :smile: , mình hỏi klq tí thôi: màn hình của bạn đang hiển thị trình nghe nhạc nào trông chất ngầu vậy :smile:

1 Like

cái bài ở trên của bạn viết bằng C# k chạy được bạn à

Chắc là bạn gõ nhầm thôi :smiley:

À, mình dùng Windows Media Player :joy:
Cái spectrum là skin của Rainmeter
Lyric thì MiniLyrics

2 Likes

Bạn qua mấy màn trên codefight r vậy

À, đợt thực tập tốt nghiệp, mình chán chán nên làm chơi cho vui ý mà, chủ yếu là arcade. Đến bàn khó quá, nghĩ không ra hướng, chán quá bỏ :joy:

Cái này làm cho vui thôi, không có nhiều ích lợi lắm đâu, giết thời gian là chính. Nếu bận học thì đừng làm nhiều.

1 Like

chỗ interview bạn qua bao nhiêu màn r

Đến hết linked list. đoạn hash table thì chả hiểu đề nó hỏi gì, tại dốt tiếng Anh :joy: Sau đó bỏ không làm nữa

1 Like

khó nhỉ vậy bạn còn giữ mấy cái bạn qua màn k

Giữ thì giữ, nhưng nếu bạn không tự qua màn được thì không xem được đâu, trừ khi mình chụp màn hình lại. Cứ từ từ mà luyện, đừng xem đáp án vội không nghĩ được đâu =]]

1 Like

bạn cho mình tham khảo vì mấy bài mình chỉ qua đc mấy test

Cái này bạn gắng tự nghĩ. Muốn tham khảo code của người khác thì bỏ coin ra xem cũng được mà :smiley:

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