【C语言刷题——Leetcode10道简单题】
26. 删除有序数组中的重复项
先理解一下题目:请你** 原地** 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。
解题思路:这里可以采用双指针的做法,一个为fast,一个为slow。我们都初始化为0.我们知道,数组是有序的,那么重复的数据是相邻的,比较较 fast和low位置的元素是否相等。刚开始,两个都指向第一个元素,肯定相等,直接让fast++。
遍历循环:
如果相等,fast 后移 1 位。
如果不相等,将++slow的值改为fast,fast 后移 1 位。直到遍历结束。最后在把numsSize置为slow+1.下面,上手代码:
提交运行:
69. x 的平方根
这道题刚开始一看是觉得应该会挺简单的。不过却有一个坑在这个地方:==由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去== 。所以对于一些算术平方根不是整数的话,如8 的算术平方根是 2.82842…, 由于返回类型是整数,小数部分将被舍去。所以,所以我们要特殊的处理一下,下面一起来看看我们怎么写的把:
8行代码解决,不过要注意:==为了防止数字溢出的情况,target要定义为long类型。==
提交运行:
287. 寻找重复数
解题思路:排完序之后判断相邻的数是否相等,相等即为重复的数,直接输出即可。比较简单
提交运行:
342. 4的幂
此题可以采用递归做法。这里提供一个非递归的做法:
提交运行:
414. 第三大的数
题目要求很简单,找出第三大的数。如果你没有看示例的话,很可能会直接排序之后输出第三个数。看看示例2和示例3的说明在做。
这可不是通过排序就能直接返回值了,我们可以定义一个计数器来计算第三大的数,等于3之时在输出。然后如果不是等于三的话,就输出最大的数即可。
下面,我们先来一个错误的示范:❌
代码的逻辑没有错,可以准确的输出结果,但是当你提交的时候你会发现:
为什么会这样?
很好理解,当其中一个是负数很小时,另一个是正数很大时,相减就超出了int类型的范围了。所以。在这里,我们为了避免这种情况的出现,直接去比较大小即可。
提交运行:
977. 有序数组的平方
给你一个按 非递减顺序 排序的整数数组
nums
,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。解题思路:直接让原数组进行平方,然后在进行排序即可
提交运行:
1137. 第 N 个泰波那契数
泰波那契数…emm我想到的是斐波那契数,这些名字真有意思啊。找到规律之后并不难,采用迭代的做法即可。
提交运行:
1952. 三除数
直接去计算整数n的整除数是否等于3即可
提交运行:
2057. 值相等的最小索引
直接去遍历一遍数组即可
提交运行:
2235. 两整数相加
我觉得这才应该是leetcode的第一道题把。前面太难了点😥
- 点赞
- 收藏
- 关注作者
评论(0)