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再输出。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部