2024.6.10
**每日一题**
881.救生艇,依据题意可以看出这道题是一道贪心的题目,即越多地安排两个人坐一艘船更好,所以我们想到每次都用最小和最大的组合,判断是否能够合并,故需要先进行排序,然后利用双指针的特性,如果前后两个可满足,那么就共同向中间靠近,如果不满足,就后面的往前一个单位。最后需要注意的是,需要判断当最后只剩一个人的时候 ,再加上一条船。
125.验证回文串,依据题意模拟即可,首先新建一个字符串,将原字符串的数字元素保留,字母元素转为小写之后保留,再利用双指针方法逐次向中间靠拢,只要有一组不相同,直接返回false,直到遍历整个字符串。
if(isdigit(s[i])) ans+=s[i];
if(isalpha(s[i])) ans+=tolower(s[i]);
167.两数之和Ⅱ-输入有序数组,该题数组已经排序好了,且答案只有一种可能,那么我们只需要遍历数组,找到一个正确的答案就退出即可。为了降低时间复杂度,我们可以通过二分查找或者双指针的方法来求解。利用二分查找的方法时,我们只需要遍历一次数组,定义一个low,一个high指针,分别判断每次和的结果,如果等于目标则直接输出,若大于,则high=mid-1,若小于,则low=mid+1,可以快速完成数组的查找,最后如果都没有找到就返回-1。当我们使用双指针方法时,我们只需要定义头尾两个指针,依次向中间靠拢,如果等于目标值就返回,如果大于就后者往前,小于就前者向后,注意题目中下标从1开始,所以答案需要+1再输出。
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 2024.6.10 刷题总结
发表评论 取消回复