1342[將數字變成0的操作次數]
題目
連結
LeetCode1342[將數字變成0的操作次數]
詳情
例項
例項1
例項2
例項3
提示
題解
思路
判斷 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[最富有客戶的資產總量]
詳情
例項
例項1
例項2
例項3
提示
題解
思路
先定義一個最大值 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]
詳情
例項
例項1
例項2
例項3
提示
題解
思路
定義一個容器 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;
}
};