C/C++每日一练(20230318)
创始人
2025-05-30 03:13:11
0

目录

1. 2 的幂  🌟

2. 打印年历  🌟

3. 二叉树的右视图  🌟🌟

🌟 每日一练刷题专栏 🌟

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏


1. 2 的幂

给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。

如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。

示例 1:

输入:n = 1
输出:true
解释:2^0 = 1

示例 2:

输入:n = 16
输出:true
解释:2^4 = 16

示例 3:

输入:n = 3
输出:false

示例 4:

输入:n = 4
输出:true

示例 5:

输入:n = 5
输出:false

提示:

  • -2^31 <= n <= 2^31 - 1

进阶:你能够不使用循环/递归解决此问题吗?

代码:

#include 
using namespace std;class Solution{
public:bool isPowerOfTwo(int n){if (n < 1) return false;while (n%2 == 0) n /= 2;return n == 1;}void PowerOfTwo(int n){cout << (isPowerOfTwo(n) ? "true" : "false") << endl;}
};int main()
{Solution s;s.PowerOfTwo(1);s.PowerOfTwo(16);s.PowerOfTwo(3);s.PowerOfTwo(4);s.PowerOfTwo(5);return 0;
}

输出:

true
true
false
true
false 

递归法:

#include 
using namespace std;class Solution{
public:bool isPowerOfTwo(int n){if (n < 1) return false;else if (n == 1) return true;else return n % 2 == 0 && isPowerOfTwo(n / 2);}void PowerOfTwo(int n){cout << (isPowerOfTwo(n) ? "true" : "false") << endl;}
};int main()
{Solution s;s.PowerOfTwo(1);s.PowerOfTwo(16);s.PowerOfTwo(3);s.PowerOfTwo(4);s.PowerOfTwo(5);return 0;
}

进阶: 位运算,可以不使用循环/递归

2^n满足条件: n & (n - 1) == 0

#include 
using namespace std;class Solution{
public:bool isPowerOfTwo(int n){return n > 0 && (n & (n - 1)) == 0;}void PowerOfTwo(int n){cout << (isPowerOfTwo(n) ? "true" : "false") << endl;}
};int main()
{Solution s;s.PowerOfTwo(1);s.PowerOfTwo(16);s.PowerOfTwo(3);s.PowerOfTwo(4);s.PowerOfTwo(5);return 0;
}

2. 打印年历

要求:模仿现实生活中的挂历。 当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几)。 当系统日期变到下一月时,系统自动翻页到下一月。

代码:

#include 
int year(int y)
{if ((y%4==0) && (y%100!=0) || y%400==0)return 366;elsereturn 365;
}
int main()
{int y;int i,j,sum=0;    int begin,week;int days[12]={31,28,31,30,31,30,31,31,30,31,30,31};scanf("%d",&y);for(i=1;i

输出:

2023

2023年日历如下:
       1月
   7   1   2   3   4   5   6
=====================
        1   2   3   4   5   6
   8   9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31
       2月
   7   1   2   3   4   5   6
=====================
                  1   2   3   4
   5   6   7   8   9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28
       3月
   7   1   2   3   4   5   6
=====================
                  1   2   3   4
   5   6   7   8   9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30 31
       4月
   7   1   2   3   4   5   6
=====================
                                 1
   2   3   4   5   6   7   8
   9 10 11 12 13 14 15
 16 17 18 19 20 21 22
 23 24 25 26 27 28 29
 30
       5月
   7   1   2   3   4   5   6
=====================
        1   2   3   4   5   6
   7   8   9 10 11 12 13
 14 15 16 17 18 19 20
 21 22 23 24 25 26 27
 28 29 30 31
       6月
   7   1   2   3   4   5   6
=====================
                       1   2   3
   4   5   6   7   8   9 10
 11 12 13 14 15 16 17
 18 19 20 21 22 23 24
 25 26 27 28 29 30
       7月
   7   1   2   3   4   5   6
=====================
                                 1
   2   3   4   5   6   7   8
   9 10 11 12 13 14 15
 16 17 18 19 20 21 22
 23 24 25 26 27 28 29
 30 31
       8月
   7   1   2   3   4   5   6
=====================
             1   2   3   4   5
   6   7   8   9 10 11 12
 13 14 15 16 17 18 19
 20 21 22 23 24 25 26
 27 28 29 30 31
       9月
   7   1   2   3   4   5   6
=====================
                            1   2
   3   4   5   6   7   8   9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30

       10月
   7   1   2   3   4   5   6
=====================
   1   2   3   4   5   6   7
   8   9 10 11 12 13 14
 15 16 17 18 19 20 21
 22 23 24 25 26 27 28
 29 30 31
       11月
   7   1   2   3   4   5   6
=====================
                  1   2   3   4
   5   6   7   8   9 10 11
 12 13 14 15 16 17 18
 19 20 21 22 23 24 25
 26 27 28 29 30
       12月
   7   1   2   3   4   5   6
=====================
                            1   2
   3   4   5   6   7   8   9
 10 11 12 13 14 15 16
 17 18 19 20 21 22 23
 24 25 26 27 28 29 30
 31


3. 二叉树的右视图

给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。

示例 1:

输入: [1,2,3,null,5,null,4]
输出: [1,3,4]

示例 2:

输入: [1,null,3]
输出: [1,3]

示例 3:

输入: []
输出: []

提示:

  • 二叉树的节点个数的范围是 [0,100]
  • -100 <= Node.val <= 100 

代码:

#include
#include
#include
#include
#define null INT_MIN
using namespace std;struct TreeNode
{int val;struct TreeNode *left;struct TreeNode *right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};TreeNode* buildTree(vector& nums)
{if (nums.empty()) return nullptr;TreeNode *root = new TreeNode(nums.front());queue q;q.push(root);size_t i = 1;while(!q.empty() && i < nums.size()){TreeNode *cur = q.front();q.pop();if(i < nums.size() && nums[i] != null){cur->left = new TreeNode(nums[i]);q.push(cur->left);}i++;if(i < nums.size() && nums[i] != null){cur->right = new TreeNode(nums[i]);q.push(cur->right);}i++;}return root;
}string vectorToString(vector vect) {stringstream ss;ss << "[";for (size_t i = 0; i < vect.size(); i++){ss << (vect[i] == null ? "null" : to_string(vect[i]));ss << (i < vect.size() - 1 ? ", " : "]");}return ss.str();
}class Solution
{
public:vector rightSideView(TreeNode *root){vector ret;queue queues[2];if (root)queues[0].push(root);int i = 0, j = 1, tmp;TreeNode *p;while (!queues[0].empty() || !queues[1].empty()){while (!queues[i].empty()){p = queues[i].front();queues[i].pop();if (p->left)queues[j].push(p->left);if (p->right)queues[j].push(p->right);tmp = p->val;}ret.push_back(tmp);i = (i + 1) % 2;j = (j + 1) % 2;}return ret;}
};int main()
{Solution s;vector nums = {1,2,3,null,5,null,4};TreeNode* root = buildTree(nums);vector inorder = s.rightSideView(root);cout << vectorToString(inorder) << endl;return 0;
}/* 附:二叉树中序遍历 
#include
vector inorderTraversal(TreeNode* root) {vector res;stack nodes;TreeNode* p = root;while (p != NULL || !nodes.empty()) {if (p != NULL) {nodes.push(p);p = p->left;} else {p = nodes.top();nodes.pop();res.push_back(p->val);p = p->right;}}return res;
}
*/

输出:

[1, 3, 4]


🌟 每日一练刷题专栏 🌟

持续,努力奋斗做强刷题搬运工!

👍 点赞,你的认可是我坚持的动力! 

🌟 收藏,你的青睐是我努力的方向! 

评论,你的意见是我进步的财富!  

Golang每日一练 专栏

Python每日一练 专栏

C/C++每日一练 专栏

Java每日一练 专栏

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...