[Series] Mỗi tuần một bài toán Hackerrank (số thứ 7)

Bài toán : Pairs
Level : Medium

224485 Spongebob - Squarepants - - Yay - Sticker 4bb396 ...

Nhận xét : Một bài toán Medium Level nhưng tôi lại thấy bài này quá dễ. Dễ đến mức dễ hơn cả easy level.

Đây là bài toán mà có lẽ bạn chỉ cần đọc phát là làm được luôn nên hay thử tự nghĩ trước khi tham khảo solution của tôi nhé .

Tóm tắt bài toán : cho một mảng array gồm các phần tử ngẫu nhiên dộc nhất trong khoảng điều kiện và 1 số k. Đếm só lượng cặp có giá trị diff = k.

Solution: Đầu tiên tôi sẽ sắp xếp mảng dùng Array.sort() (một công cụ tuyệt vời)
Sau đó tôi dùng for lồng kiểm tra từng cặp phần tử một lần.
Thêm điều kiện if(diff>k) break; vòng lặp for j
Vì đây là điều kiện khi diff đã lớn hơn k rồi ta không cần xét nữa vì array của ta đã được sắp xếp nên có so sánh nữa cũng chỉ là tốn time có thể dẫn đến TLE mà thôi vì diff sẽ ngày càng lớn.

Projects Vs Competitive Programming | by Vaidhyanathan Sm | Jun ...

Code tham khảo:

Link pastebin có hightlìght syntax: https://pastebin.com/4kZ0aWFB

  1. static int pairs(int k, int[] arr) {
  2.         Arrays.sort(arr);
  3.         int countPairs =0;
  4.         for(int i=0;i<arr.length-1;i++){
  5.             for(int j=i+1;j<arr.length;j++){
  6.                 int diff = arr[j] – arr[i];
  7.                 if(diff>k)
  8.                     break;
  9.                 else if(diff ==k)
  10.                     countPairs++;
  11.             }
  12.         }
  13.         return countPairs++;
  14.     }

Một bài toán mà bạn dễ dàng có thể có 50 point ở mức Medium .
Thiết nghĩ, các cao thủ trên hackerrank nên sắp xếp lại về đánh giá level của mình. Vì có nhiều bài easy level mà đọc tôi chỉ biết nói “What the hell?” và có một số bài Medium thì lại quá dễ .Thế mới thấy làm Medium chưa chắc đã giỏi và làm Easy chưa chắc đã kém. Nhưng tất nhiên bạn mà làm hết được medium thì bạn giỏi thật sự :D.

Have a nice day everyone !

Conal Dev

Leave a reply:

Your email address will not be published.

Site Footer

Sliding Sidebar

Facebook