- 💖 作者簡介:大家好,我是澤奀,
- 🏆 嵌入式領域新星創作者 作者周榜: 38 總排名: 4717 👑
- 📝 個人主頁:澤奀的博客_CSDN博客
- 🎉 點贊 ? 評論 ? 收藏 == 養成習慣😜
- 📣 系列專欄:【C】題目_澤奀的博客-CSDN博客
- 💬 總結:希望你看完之后,能對你有所幫助,不足請指正!共同學習交流 🖊
- 🔉 創作時間:2021 : 12 . 12 日 📅
- ?? 我們并非登上我們所選擇的舞臺,演出并非我們所選擇的劇本,
🎃本章博客題目力扣鏈接
- 劍指 Offer 64. 求1+2+…+n - 力扣(LeetCode)
- 231. 2 的冪 - 力扣(LeetCode)
- 326. 3 的冪 - 力扣(LeetCode)
- 342. 4的冪 - 力扣(LeetCode)
目錄
🎃本章博客題目力扣鏈接
?求1+2+...+n -
?2的冪以及3的冪和4的冪
?求1+2+...+n -
- 題目:求
1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等關鍵字及條件判斷陳述句(A?B:C),
示例:
輸入: n = 3
輸出: 6
并且
輸入: n = 9
輸出: 45
限制:
1 <= n <= 10000
📝題解思路1:
對于實在不會的話,別理他這個題目規則,怎么了回圈不就是給題目用的嗎?管他呢是吧
int sumNums(int n)
{
int i;
int sum = 0;
for(i=0;i<=n;i++)
{
sum = sum + i;
}
return sum;
}
📝題解思路2:
還有一種就是用遞回來做,這道題目其實本質和N的階層用遞回做出來是很像的,其實,只需要注意遞回的特性就可以了
- 存在限制條件,當符合這個條件時遞回便不再繼續
- 每次遞回呼叫之后越來越接近這個限制條件
int sumNums(int n)
{
if (n <= 1)
return 1;
else
return (n+sumNums(n - 1));
?2的冪以及3的冪和4的冪
- 題目:給你一個整數 n,請你判斷該整數是否是 2 的冪次方,如果是,回傳 true ;否則,回傳 false ,如果存在一個整數 x 使得 n == 2x ,則認為 n 是 2 的冪次方,
示例:
輸入:n = 1 輸出:true 解釋:20 = 1
輸入:n = 16 輸出:true 解釋:24 = 16
輸入:n = 3 輸出:false
輸入:n = 3 輸出:false
輸入:n = 5 輸出:false
提示:
-231 <= n <= 231 - 1注:由于這三道題類似我就放在一起了!
📝題解思路1:
這道題的關鍵就是:
請你判斷該整數是否是 2 的冪次方,如果是,回傳 true ;否則,回傳 false ,所以首先 n<=0 就肯定是 false 也就是 n<1,n == 1 就是 turn,然后用 for 回圈,再里面用 if 陳述句進行判斷,為真就回傳 turn ,回圈完時候,回傳 false
bool isPowerOfTwo(int n){
int i;
unsigned int k = 1;//無符號
if(n<=0)
{
return false;
}
if(n==1)
{
return true;
}
for(i=1;i<=31;++i)
{
k =k * 2;
if(k==n)
{
return true;
}
}
return false;
}
bool isPowerOfTwo(int n){
int i;
unsigned int k = 1;//無符號
if(n<=0)
{
return false;
}
if(n==1)
{
return true;
}
for(i=1;i<=31;++i)
{
k =k * 3;
if(k==n)
{
return true;
}
}
return false;
}
bool isPowerOfTwo(int n){
int i;
unsigned int k = 1;//無符號
if(n<=0)
{
return false;
}
if(n==1)
{
return true;
}
for(i=1;i<=31;++i)
{
k =k * 4;
if(k==n)
{
return true;
}
}
return false;
}
📝題解思路2:
不過,這道題目重點是使用位運算的一個思路
n & (n - 1) == 0;該方法可以去掉原值二進制低位的 1,如果是 2 的冪,則 n 的二進制表示肯定只有 1 個 1,去掉之后肯定為 0 了,其實也就是是不是判斷 0 即可;
按位&運算:雙目運算子,其功能是參與運算的兩數各對應的二進位相與,只有對應的兩個二進位均為 1 時,結果位才為 1,否則為 0,參與運算的數以補碼方式出現,
bool isPowerOfTwo(int n){
if (n < 1)
{
return false;
}
return (n & n-1) == 0;
}


轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/397583.html
標籤:其他
