力扣新手村之1342、1672、412

EricsT發表於2024-11-05

1342[將數字變成0的操作次數]

題目

連結

LeetCode1342[將數字變成0的操作次數]

詳情

力扣新手村之1342、1672、412

例項

例項1

力扣新手村之1342、1672、412

例項2

力扣新手村之1342、1672、412

例項3

力扣新手村之1342、1672、412

提示

力扣新手村之1342、1672、412

題解

思路

判斷 num 是否為0

不為0則判斷 num 是否為偶數

num 是偶數則除以2

num 不是偶數則減1

操作次數加1

重複上述步驟,直到 num 為0,返回操作次數

程式碼

class Solution {
public:
    int numberOfSteps(int num) {
        int iCount = 0;
        while (num)
        {
            if (0 == (num % 2))
                num /= 2;
            else 
                num -= 1;
            
            iCount++;
        }

        return iCount;
    }
};

1672[最富有客戶的資產總量]

題目

連結

LeetCode1672[最富有客戶的資產總量]

詳情

力扣新手村之1342、1672、412

例項

例項1

力扣新手村之1342、1672、412

例項2

力扣新手村之1342、1672、412

例項3

力扣新手村之1342、1672、412

提示

力扣新手村之1342、1672、412

題解

思路

先定義一個最大值 iMax 設定為負值,保證資產為0時也可以被儲存

再一次遍歷每個人的所有資產,求和 iSum

之後比較 iSum 和 iMax 的大小

如果 iSum 大於 iMax 則將 iSum 的值賦給 iMax,即 iMax = iSum,保證 iMax 儲存的是最大值

最後輸出 iMax

程式碼

class Solution {
public:
    int maximumWealth(vector<vector<int>>& accounts) {
        int iMax = -1;

        for (int i = 0; i < accounts.size(); i++)
        {
            int iSum = 0;
            
            for (int j = 0; j < accounts.at(i).size(); j++)
                iSum += accounts.at(i).at(j);
                
            if (iMax < iSum)
                iMax = iSum;
        }

        return iMax;
    }
};

412[Fizz Buzz]

題目

連結

LeetCode412[Fizz Buzz]

詳情

力扣新手村之1342、1672、412

例項

例項1

力扣新手村之1342、1672、412

例項2

力扣新手村之1342、1672、412

例項3

力扣新手村之1342、1672、412

提示

力扣新手村之1342、1672、412

題解

思路

定義一個容器 sRetVec,依次遍歷每一個數

如果可以被3和5同時整除,則在容器內加入一個元素"FizzBuzz",即 1 == ((0 == (num % 3)) && (0 == (num % 5)))成立,sRetVec.push_back("FizzBuzz")繼續遍歷下一個數

如果可以被3整除,則在容器內加入一個元素"Fizz",即 0 == (num % 3)成立,sRetVec.push_back("Fizz")繼續遍歷下一個數

如果可以被3整除,則在容器內加入一個元素"Buzz",即 0 == (num % 5)成立,sRetVec.push_back("Buzz")繼續遍歷下一個數

如果均不行,則將數值轉換為字串並加入容器,即sprintf(buff, "%d", num)//char buff[10] = { 0 };sRetVec.push_back(buff)繼續遍歷下一個數

最後遍歷完輸出容器

程式碼

class Solution {
public:
    vector<string> fizzBuzz(int n) {
        vector<string> sRetVec;

        for (int i = 1; i < n + 1; i++)
        {
            if ((0 == (i % 3)) && (0 == (i % 5)))
                sRetVec.push_back("FizzBuzz");
            else if (0 == (i % 3))
                sRetVec.push_back("Fizz");
            else if (0 == (i % 5))
                sRetVec.push_back("Buzz");
            else
            {
                char buff[10] = { 0 };
                sprintf(buff, "%d", i);
                sRetVec.push_back(buff);
            }
        }
        return sRetVec;
    }
};

相關文章