栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【C语言刷题——爬楼梯、只出现一次的数字、位1的个数】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【C语言刷题——爬楼梯、只出现一次的数字、位1的个数】

✨作者:@平凡的人1

✨专栏:《小菜鸟爱刷题》

✨一句话:凡是过往,皆为序章

✨说明: 过去无可挽回, 未来可以改变


感谢您的点赞与关注,同时欢迎各位有空来访我的平凡舍


好久没更新刷题这个专栏了,趁现在有时间,抓紧更新,无需多言,直接开刷。

70. 爬楼梯

类似于斐波那契数列问题,刚开始采用递归的做法,但是效率太慢,超出了时间限制,所以我们不采用递归的做法❌

这里,我们可以利用迭代的做法完成,将后一个数赋值给前一个数。同时,我们要注意n是如何使用的:

提交之后,你会发现,在C提交种运行时间超过了100%的用户

136. 只出现一次的数字

给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。

此题比较简单,我们只要知道前面学过的位运算符中的按位异或的用法即可。下面,简单复习一下:

首先按位异或表示当两个数的二进制表示,进行异或运算时,当前位的两个二进制表示不同则为1 ,相同则为0. 该方法被广泛用来统计一个数的1的位数。

即:
0 ^ 0 = 0 ,
0 ^ 1 = 1,
1 ^ 0 = 1 ,
1 ^ 1 = 0 ,
按位异或的3个特点:
1.)0 ^ 0 = 0 , 0 ^ 1 = 1, 0异或任何数=任何数。
2.)1 ^ 0 = 1 , 1 ^ 1 = 0 , 1异或任何数=任何数取反。
3.)任何数异或自己 = 把自己置0。

基于上面的知识,我们可以遍历一遍数组,同时按位异或上0,最终即可得到我们想要的结果:

提交运行:

191. 位1的个数

这道题的目的很简单,就是叫你统计一个数中二进制位中1的个数。我们可以利用按位与操作符来进行统计。

按位与:C/C++中的“按位与”. 规则:. 1&1=1. 1&0=0. 0&1=0. 0&0=0. 按位与运算 按位与运算符“&”是双目运算符。. 其功能是参与运算的两数各对应的二进位相与。只要对应的二个二进位都为1时,结果位就为1。

两位同时为1,结果才为1,否则结果为0。例如:3&5 即 0000 0011& 0000 0101 = 0000 0001,因此 3&5 的值得1。

基于上面的知识,我们可以利用一个数&1,看看这个数的最后因为是否位1,之后在进行右移即可,下面,直接看我们的代码:

提交运行,执行用时:0 ms, 在所有 C 提交中击败了100.00%的用户

总结

C语言学习的过程中要多加练习的(不只是C语言),一开始肯定是做一些比较简单的题目,提高自己的代码能力,还有要多想想能不能想到更好的方法,提高代码的效率。同时也可以写成博客记录下来,记载自己的刷题过程分享给别人,同时方便自己复习哈哈

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/947223.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号