ການແກ້ໄຂພື້ນຖານ 7 Leetcode


ລະດັບຄວາມຫຍຸ້ງຍາກ Easy
ຖາມເລື້ອຍໆໃນ Bloomberg Garena
ຄະນິດສາດ

ປັນຫາ Base 7 Leetcode Solution, ຂໍໃຫ້ພວກເຮົາປ່ຽນເລກເປັນເລກ 7 ເລກຖານ. ຕົວເລກທີ່ມອບໃຫ້ສາມາດລົບຫລືບວກຈົນຮອດ 10 ລ້ານ, ທັງສອງທິດທາງໃນເສັ້ນ ໝາຍ ເລກ. ປັນຫາດັ່ງກ່າວເບິ່ງຄືວ່າງ່າຍດາຍແລະເປັນການປ່ຽນຕົວເລກທົດສະນິຍົມເປັນຖານທີ່ແຕກຕ່າງກັນ. ຄືກັນກັບການປ່ຽນເລກໃນຮູບແບບຖານສອງ. ແທນທີ່ພື້ນຖານຈະເປັນ 2, ພື້ນຖານແມ່ນ 7. ມູນຄ່າການກັບມາຄວນຈະເປັນສາຍເຊືອກ. ຂໍໃຫ້ພິຈາລະນາບາງຕົວຢ່າງ.

ຍົກຕົວຢ່າງ

100
"202"

ຄໍາອະທິບາຍ: ຈໍານວນ 202 ໃນຖານ 7 ຫຼັງຈາກການປ່ຽນໃຈເຫລື້ອມໃສໃຫ້ຜົນຜະລິດ 100 ໃນຮູບແບບທົດສະນິຍົມ. 202 ໃນຖານ 7 = 2 * (7 ^ 2) + 0 * (7 ^ 1) + 2 * (7 ^ 0) = 100 ໃນຖານ 7.

ການແກ້ໄຂພື້ນຖານ 7 Leetcode

-7
"-10"

ຄໍາອະທິບາຍ: ຈໍານວນທີ່ໃຫ້ -7 ຫຼັງຈາກປ່ຽນເປັນຖານ 7 ຈະໃຫ້ -10.

ວິທີການແກ້ໄຂບັນຫາ Leetcode 7

ບັນຫາພື້ນຖານ 7 Leetcode Solution, ໃຫ້ພວກເຮົາມີເລກຫຼື integer ແລະຂໍໃຫ້ພວກເຮົາປ່ຽນມັນເຂົ້າໄປໃນພື້ນຖານ 7. ການປ່ຽນໃຈເຫລື້ອມໃສເຂົ້າໃນບໍ່ພຽງແຕ່ພື້ນຖານ 7, ແມ່ນການ ດຳ ເນີນງານທີ່ງ່າຍດາຍ. ພວກເຮົາສືບຕໍ່ແບ່ງປັນ ຈຳ ນວນທີ່ໃຫ້ໄວ້ກັບຖານທີ່ຕ້ອງການຂອງພວກເຮົາ. ຫຼັງຈາກແບ່ງ ຈຳ ນວນ, ສ່ວນທີ່ເຫຼືອແມ່ນເກັບໄວ້. ຫຼັງຈາກນັ້ນ, ຜົນໄດ້ຮັບທີ່ພົບເຫັນຫຼັງຈາກແບ່ງ ຈຳ ນວນແມ່ນຖືກສົ່ງອີກເທື່ອ ໜຶ່ງ ສຳ ລັບການແບ່ງປັນທີ່ຊ້ ຳ. ພວກເຮົາສືບຕໍ່ເກັບຮັກສາສ່ວນທີ່ເຫຼືອເຊິ່ງເປັນ ຄຳ ຕອບຕໍ່ ຄຳ ຖາມ. ຂະບວນການຄ້າງຫ້ອງຖືກຢຸດເມື່ອ ຈຳ ນວນກາຍເປັນຕົວເລກຕໍ່າກ່ວາພື້ນຖານທີ່ມອບໃຫ້.

ສະນັ້ນ, ພວກເຮົາພິຈາລະນາ 100 ເປັນຂໍ້ສະ ເໜີ ແນະ. ຫນ້າທໍາອິດ, ພວກເຮົາແບ່ງເລກໂດຍ 7, ຕົວຄູນແມ່ນ 14, ແລະສ່ວນທີ່ເຫຼືອແມ່ນ 2. ດຽວນີ້, ໂຄ້ດກາຍເປັນ 2, ແລະສ່ວນທີ່ເຫຼືອແມ່ນເກັບໄວ້. ຈົນກ່ວາໃນປັດຈຸບັນ, ຕົວເລກທີ່ປ່ຽນໃຈເຫລື້ອມໃສຈະກາຍເປັນ 20. ຫຼັງຈາກນັ້ນ, ຄ່າຍ່ອຍຈະຖືກສົ່ງອີກເທື່ອ ໜຶ່ງ ເພື່ອແບ່ງແຕ່ຖືກສົ່ງຄືນເພາະວ່າມັນ ໜ້ອຍ ກວ່າຖານທີ່ໄດ້ມອບ (7). ດັ່ງນັ້ນ, ຜົນສຸດທ້າຍກໍ່ອອກມາເປັນ 202.

ລະຫັດ

ລະຫັດ C ++ ສຳ ລັບ Base 7 Leetcode Solution

#include <bits/stdc++.h>
using namespace std;

string convertToBase7(int num) {
    if(num < 0)return "-" + convertToBase7(-num);
    else if(num < 7) return to_string(num);
    else
        return convertToBase7(num/7) + convertToBase7(num%7);
}

int main(){
    cout<<convertToBase7(100);
}
202

ລະຫັດ Java ສຳ ລັບ Base 7 Leetcode Solution

import java.util.*;
import java.lang.*;
import java.io.*;

class Solution {
    public static String convertToBase7(int num) {
        if(num < 0)return "-" + convertToBase7(-num);
        else if(num < 7) return Integer.toString(num);
        else
            return convertToBase7(num/7) + convertToBase7(num%7);
    }
    
    public static void main(String[] args){
    	System.out.print(convertToBase7(100));
    }
}
202

ການວິເຄາະຄວາມສັບສົນ

ຄວາມສັບສົນເວລາ

ໂອ (M (n) log n), ບ່ອນທີ່ n ແມ່ນຄວາມຍາວຂອງວັດສະດຸປ້ອນທີ່ໃຫ້, M (n) ແມ່ນເວລາທີ່ຈະຕ້ອງແບ່ງສອງຕົວເລກ 2 ບິດ. ດັ່ງນັ້ນ, ຄວາມສັບສົນເວລາແມ່ນ logarithmic.

ຄວາມສັບສົນໃນອະວະກາດ

O (log n), ຊ່ອງທີ່ໃຊ້ໂດຍ compiler stack. ນີ້ n ສະແດງຄວາມຍາວຂອງຕົວເລກ. ສະນັ້ນ, ຄວາມສັບສົນທາງດ້ານອະວະກາດກໍ່ແມ່ນພາສາ logarithmic.