当前位置:网站首页>【C语言刷题——Leetcode12道题】带你起飞,飞进垃圾堆
【C语言刷题——Leetcode12道题】带你起飞,飞进垃圾堆
2022-06-24 15:32:00 【平凡的人1】
作者:@平凡的人1
专栏:《小菜鸟爱刷题》
一句话:凡是过往,皆为序章
说明: 过去无可挽回, 未来可以改变
感谢您的点赞与关注,同时欢迎各位有空来访我的平凡舍
刷题之——Leetcode12道简单题,通过这12道简单题,让你对Leetcode有所新的理解,增强自己的做题能力。
下面,直接进入我们的题目。
文章目录
260.只出现一次的数字III(难度:中等)
给定一个整数数组 nums,其中恰好有两个元素只出现一次,其余所有元素均出现两次。 找出只出现一次的那两个元素。你可以按 任意顺序 返回答案。
进阶:你的算法应该具有线性时间复杂度。你能否仅使用常数空间复杂度来实现?
示例 1:
输入:nums = [1,2,1,3,2,5]
输出:[3,5]
解释:[5, 3] 也是有效的答案。
示例 2:输入:nums = [-1,0]
输出:[-1,0]
示例 3:输入:nums = [0,1]
输出:[1,0]来源:力扣(LeetCode)
这道题Leetcode难度归类为中等,但是我感觉我们撑一撑应该还是能做得出来的(bushi):
这里的变量为了方便说明就使用我做题过程中命名的名字了
解题思路:首先,我们定义一个变量(eor)初始化为0去遍历按位异或数组中的所有元素,此时得到的是只出现一次的两个元素的二进制异或结果。然后去对二进制的结果进行处理:对于两个不同的数字,异或出来的二进制结果中为1的话说明了:在该二进制位上的数字是不同的(我们可以定义一个变量rightone去找出此时二进制结果中最右边位1的位置,至于怎么找等下直接看代码即可,这里不展开说明了)。基于此,我们在把数组的元素分为两类:一类是在该二进制位相同的元素,另一类是在该二进制位不同的元素。然后在遍历一次数组,&按位与rightone找出其中的一个数onlyone,至于另外一个数直接根据第一次两数异或的结果eor在异或上onlyone即可得出。
下面,看看我们的代码:

(温馨提示:这里的变量如果定义为int类型的话,会出现溢出的错误,不要问我为什么知道,因为一开始自己的就是int类型,所以改为long类型较为合适)
下面进行提交运行:

728.自除数
自除数 是指可以被它包含的每一位数整除的数。
例如,128 是一个 自除数 ,因为 128 % 1 == 0,128 % 2 == 0,128 % 8 == 0。
自除数 不允许包含 0 。给定两个整数 left 和 right ,返回一个列表,列表的元素是范围 [left, right] 内所有的 自除数 。
示例 1:
输入:left = 1, right = 22
输出:[1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 15, 22]
示例 2:输入:left = 47, right = 85
输出:[48,55,66,77]来源:力扣(LeetCode)
这道题怎么说呢,关键在于把一个数中的每一位找出来,看看是否整除即可。为了方便,可以封装一个函数来进行处理:


==本菜鸟的就是这种做法emm,至于大佬==的我就不知道了
922.按奇偶排序数组 II
给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。
对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。
你可以返回 任何满足上述条件的数组作为答案 。
示例 1:
输入:nums = [4,2,5,7]
输出:[4,5,2,7]
解释:[4,7,2,5],[2,5,4,7],[2,7,4,5] 也会被接受。
示例 2:输入:nums = [2,3]
输出:[2,3]来源:力扣(LeetCode)
把数组中一半的奇数找出来,另一半的偶数找出来,下标稍微处理一下即可解决问题:


976. 三角形的最大周长
给定由一些正数(代表长度)组成的数组 nums ,返回 由其中三个长度组成的、面积不为零的三角形的最大周长 。如果不能形成任何面积不为零的三角形,返回 0。
示例 1:
输入:nums = [2,1,2]
输出:5
示例 2:输入:nums = [1,2,1]
输出:0来源:力扣(LeetCode)
解题思路:把数组排个序,找出3个最大的元素,判断是否能够构成三角形即可:

1287. 有序数组中出现次数超过25%的元素
给你一个非递减的 有序 整数数组,已知这个数组中恰好有一个整数,它的出现次数超过数组元素总数的 25%。
请你找到并返回这个整数
示例:
输入:arr = [1,2,2,6,6,6,6,7,10]
输出:6来源:力扣(LeetCode)
字面意思,直接做题即可:

1351. 统计有序矩阵中的负数
给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目。
示例 1:
输入:grid = [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]
输出:8
解释:矩阵中共有 8 个负数。
示例 2:输入:grid = [[3,2],[1,0]]
输出:0来源:力扣(LeetCode)
遍历走你

1903. 字符串中的最大奇数
给你一个字符串 num ,表示一个大整数。请你在字符串 num 的所有 非空子字符串 中找出 值最大的奇数 ,并以字符串形式返回。如果不存在奇数,则返回一个空字符串 “” 。
子字符串 是字符串中的一个连续的字符序列。
示例 1:
输入:num = “52”
输出:“5”
解释:非空子字符串仅有 “5”、“2” 和 “52” 。“5” 是其中唯一的奇数。
示例 2:输入:num = “4206”
输出:“”
解释:在 “4206” 中不存在奇数。
示例 3:输入:num = “35427”
输出:“35427”
解释:“35427” 本身就是一个奇数。来源:力扣(LeetCode)
从后往前遍历更加方便,只要最后的一位(相对而言,当前的最后一位)出现奇数说明这个数就是奇数了>,下面直接上手代码:

1979. 找出数组的最大公约数
给你一个整数数组 nums ,返回数组中最大数和最小数的 最大公约数 。
两个数的 最大公约数 是能够被两个数整除的最大正整数。
示例 1:
输入:nums = [2,5,6,9,10]
输出:2
解释:
nums 中最小的数是 2
nums 中最大的数是 10
2 和 10 的最大公约数是 2
示例 2:输入:nums = [7,5,6,8,3]
输出:1
解释:
nums 中最小的数是 3
nums 中最大的数是 8
3 和 8 的最大公约数是 1
示例 3:输入:nums = [3,3]
输出:3
解释:
nums 中最小的数是 3
nums 中最大的数是 3
3 和 3 的最大公约数是 3来源:力扣(LeetCode)
解题思路:将数组排完序之后,第一位就是最小元素,最后一维就是最大元素,接下来就是求最大公约数了(直接辗转相除法即可):

2089. 找出数组排序后的目标下标
给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。
目标下标 是一个满足 nums[i] == target 的下标 i 。
将 nums 按 非递减 顺序排序后,返回由 nums 中目标下标组成的列表。如果不存在目标下标,返回一个 空 列表。返回的列表必须按 递增 顺序排列。
示例 1:
输入:nums = [1,2,5,2,3], target = 2
输出:[1,2]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 2 的下标是 1 和 2 。
示例 2:输入:nums = [1,2,5,2,3], target = 3
输出:[3]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 3 的下标是 3 。
示例 3:输入:nums = [1,2,5,2,3], target = 5
输出:[4]
解释:排序后,nums 变为 [1,2,2,3,5] 。
满足 nums[i] == 5 的下标是 4 。
示例 4:输入:nums = [1,2,5,2,3], target = 4
输出:[]
解释:nums 中不含值为 4 的元素。来源:力扣(LeetCode)
将 nums 按 非递减 顺序排序后,这句话说明了需要我们先去排序,数组本来是无序的,后面进行遍历查找即可:

提交运行:

2124. 检查是否所有 A 都在 B 之前
给你一个 仅 由字符 ‘a’ 和 ‘b’ 组成的字符串 s 。如果字符串中 每个 ‘a’ 都出现在 每个 ‘b’ 之前,返回 true ;否则,返回 false 。
示例 1:
输入:s = “aaabbb”
输出:true
解释:
‘a’ 位于下标 0、1 和 2 ;而 ‘b’ 位于下标 3、4 和 5 。
因此,每个 ‘a’ 都出现在每个 ‘b’ 之前,所以返回 true 。
示例 2:输入:s = “abab”
输出:false
解释:
存在一个 ‘a’ 位于下标 2 ,而一个 ‘b’ 位于下标 1 。
因此,不能满足每个 ‘a’ 都出现在每个 ‘b’ 之前,所以返回 false 。
示例 3:输入:s = “bbb”
输出:true
解释:
不存在 ‘a’ ,因此可以视作每个 ‘a’ 都出现在每个 ‘b’ 之前,所以返回 true 。来源:力扣(LeetCode)
解题思路:a是否都在b之前,所以我们定义两个变量,一个为0作为判断b的下标,另一个为1作为判断a的下标,直接去比较即可:

2180. 统计各位数字之和为偶数的整数个数
给你一个正整数 num ,请你统计并返回 小于或等于 num 且各位数字之和为 偶数 的正整数的数目。
正整数的 各位数字之和 是其所有位上的对应数字相加的结果。
示例 1:
输入:num = 4
输出:2
解释:
只有 2 和 4 满足小于等于 4 且各位数字之和为偶数。
示例 2:输入:num = 30
输出:14
解释:
只有 14 个整数满足小于等于 30 且各位数字之和为偶数,分别是:
2、4、6、8、11、13、15、17、19、20、22、24、26 和 28 。来源:力扣(LeetCode)
找出各位数字之和为 偶数 的正整数即可,封装成一个函数方便操作:

2278. 字母在字符串中的百分比
给你一个字符串 s 和一个字符 letter ,返回在 s 中等于 letter 字符所占的 百分比 ,向下取整到最接近的百分比。
示例 1:
输入:s = “foobar”, letter = “o”
输出:33
解释:
等于字母 ‘o’ 的字符在 s 中占到的百分比是 2 / 6 * 100% = 33% ,向下取整,所以返回 33 。
示例 2:输入:s = “jjjj”, letter = “k”
输出:0
解释:
等于字母 ‘k’ 的字符在 s 中占到的百分比是 0% ,所以返回 0 。来源:力扣(LeetCode)
没啥好说的,遍历就完事了

总结
博主能力有限。可能一些题有更优的做法,不过目前博主是个菜鸟,能做出来就ok了。同时,我们也应该多去总结一下,方便自己的复习的同时,也分享自己的学习过程,这样也挺不错的呀。这次就先到这里结束了,感谢游览

边栏推荐
- Port conflict handling method for tongweb
- Istio Troubleshooting: using istio to reserve ports causes pod startup failure
- Istio practical skill: enable accesslog locally
- At? Let's blow the air conditioner together!
- Data stack technology sharing: how to use data stack for data collection?
- Teach you how to deploy the pressure test engine on Tencent cloud
- CVPR2022 | 可精简域适应
- Golang implements BigInteger large number calculation
- 高速公路服务区智能一体机解决方案
- 兴业证券靠谱吗?开证券账户安全吗?
猜你喜欢

Multimeter resistance measurement diagram and precautions

同样是初级测试工程师,为啥他薪资高?会这几点面试必定出彩

ES mapping之keyword;term查詢添加keyword查詢;更改mapping keyword類型

Laravel 8 realizes auth login

From pair to unordered_ Map, theory +leetcode topic practice

As a developer, what is the most influential book for you?

Port conflict handling method for tongweb

Wide measuring range of jishili electrometer

Bert-whitening 向量降维及使用

ES mapping之keyword;term查询添加keyword查询;更改mapping keyword类型
随机推荐
安防市场进入万亿时代,安防B2B网上商城系统精准对接深化企业发展路径
Which account of Dongfang fortune is safer and better
A full set of tutorials for interviewers from Android manufacturers teach you: prepare for the interview and get the offer smoothly!
证券账户理财安全吗??
CVPR2022 | 可精簡域適應
同样是初级测试工程师,为啥他薪资高?会这几点面试必定出彩
Easynvr has been connected to the third-party supervision platform. How to achieve local Internet access
Brief discussion on the implementation framework of enterprise power Bi CI /cd
Openinstall joins hands with the book chain to help channel data analysis and create the era of Book Networking
东方财富哪个开户更安全,更好点
How about stock online account opening and account opening process? Is it safe to open an account online?
Laravel8 uses faker to call factory to fill data
Application of motion capture system in positioning and mapping of mobile robot in underground tunnel
A simple and powerful developer toolkit box3 cc
The security market has entered a trillion era, and the security B2B online mall system has been accurately connected to deepen the enterprise development path
Is it safe to open a stock account by mobile phone
Ethical considerations
US Senate promotes bipartisan gun safety bill
June training (day 24) - segment tree
Keyword of ES mapping; Term query add keyword query; Change mapping keyword type