30/09/2018, 22:46
Cho mình xin ý tưởng bài tìm chữ số xuất hiện ít nhất trong mảng
Các bạn cho xin mình ý tưởng bài này mình chỉ cần ý tưởng thôi không cần giải mình suy nghi hoài không ra ý tưởng:
cho mảng một chiều các số nguyên hãy viết hàm tìm chữ số xuất hiện ít nhất trong mảng
Bài liên quan
Có nhiều cách, dễ nhất là dùng HashMap. Cho vòng lặp add từng số vào, gặp số trùng thì tăng value lên. check value cái nào bé nhất thì ra
bạn có thể nói cụ thể dc ko mà hashmap la gì vậy bạn
Bạn đang học ngôn ngữ gì? Chắc bạn mới học chưa biết đến cái này. Nó là gì thì bạn google tìm sẽ dễ hiểu hơn.
mình đang học c++ bạn có thể cụ thể hơn bài tập này dc ko
Nếu là C++
Cách 1: cũng có thể dùng Hashmap. Cái này bạn tự google
Cách 2: Code tay: Cần tạo 3 mảng, mảng 2 và 3 có độ dài bằng nhau nhé
Hình minh họa
Cách 3: Dùng để thay cho vòng lặp ở cách 2. Bạn tìm hiểu thật toán đệ quy để viết cái hàm này
tree map cũng được, ko nhất thiết phải là hash map đâu.
map là 1 container (thùng chứa) với mục đích y hệt mảng, nhưng thay vì index phải là số nguyên như mảng, vd
arr[10]
, thì với map index (gọi là key) là kiểu gì cũng được, tất nhiên là có kèm yêu cầu nhất định:trong C++ tree map là
std::map<key_type,value_type>
, hash map làstd::unordered_map<key_type,value_type>
. Xài cái nào cũng được.Mà cái cách 2 mình nghĩ chỉ cần 2 mảng thôi cũng đủ rồi. Tùy bạn code
cám ơn sư huynh qtd đỗ trung quân sư huynh có thể cho để xin facebok có gì để sư đệ có thể trao đổi trong học tập
nếu k quan tâm đến độ phức tạp của thuật toán, bạn có thể dùng quicksort từ nhỏ đến lớn hoặc ngược lại, sau đó chỉ cần dùng nhiều nhất ba biến chạy 1 vòng for là tìm ra được.
bạn có thể nói cụ thể dc ko mình mới nhập môn chưa hiểu bạn nói lắm
ý tưởng mình đơn giản lắm, bạn sắp xếp dãy số từ nhỏ tới lớn, mục đích để các số bằng nhau nằm kế nhau, sau đó dùng vòng lặp duyệt các số trong mảng, 1 biến mang giá trị số đc lặp lại trước đó, 1 biến mang giá trị số lần lặp của giá trị đc lặp trước đó, 1 biến mang giá trị số lần lặp của giá trị đang lặp, sau đó dùng vài điều kiện if để đưa ra số có lần lặp ít nhất. bạn lấy giấy viết ra sẽ dễ hiểu hơn.
em nghĩ chỉ cần 2 mảng thôi, mảng 1 là mảng input, tạo một biến đếm, cho chạy 2 vòng lặp trên mảng 1, khi nào có hai giá trị giống nhau thì biến đếm tăng,sau cùng thì lưu giá trị vào mảng 2 rồi reset biến đếm xong tiếp tục. Cách này hơi rườm rà với lại có cái khó là số trùng nhau thì sẽ sai, nên với số nào mình đã tìm rồi thì cho giá trị nó trong mảng 1 là 1 số nào đó để tránh trùng, có thể cho bằng số đã tìm rồi :v :v :v :v
Tại bạn ý bảo mới học C++ nên anh chỉ cách cơ bản nhất ( chắc là đang học loop). Cách của em cũng được. Và cách đó cũng gần giống như cách 3 của anh. Viết 1 cái hàm đếm số lần xuất hiện của từng số trong mảng. Đặt lần đầu tiên là min rồi so sánh với các lần sau.
à sẵn em cũng cảm ơn anh, nhờ coi post mới biết cái hashmap :v