Computer >> Máy Tính >  >> Lập trình >> C ++

Tiếp cận một số trong C ++

Giả sử bạn đang đứng ở vị trí 0 trên một trục số vô hạn. Bây giờ có một mục tiêu ở vị trí mục tiêu. Ở đây trong mỗi lần di chuyển, bạn có thể đi bên trái hoặc bên phải. Trong lần di chuyển thứ n (bắt đầu từ bước 1), bạn thực hiện n bước. Chúng ta phải tìm số bước tối thiểu cần thiết để đến đích. Vì vậy, nếu đầu vào là target =3, thì chúng ta cần 2 bước. Từ 0 đến 1, từ 1 đến 3.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • target:=| target |, cnt:=0
  • trong khi mục tiêu> 0,
    • giảm cnt đi 1
    • target:=target –cnt
  • nếu target là chẵn thì trả về cnt, nếu không thì cnt + 1 + cnt mod 2

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int reachNumber(int target) {
      target = abs(target);
      int cnt = 0;
      while(target > 0){
         target -= ++cnt;
      }
      return target % 2 == 0? cnt : cnt + 1 + cnt % 2;
   }
};
main(){
   Solution ob;
   cout << (ob.reachNumber(3));
}

Đầu vào

3

Đầu ra

2