双指针
双指针如碰撞指针、快慢指针能解决不少问题
愤怒的可乐
主要研究NLP、深度学习、大模型。添加微信:greyfoss_szu 一起交流~,添加时请备注CSND。
展开
-
LeetCode刷题——3. 无重复字符的最长子串
题目思路也是通过滑动窗口的思路,固定左端,移动右端;再移动左端。代码class Solution(object): def lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ size = len(s) l,r = 0,-1 # [l,r]子串 longest = 0 cur =原创 2021-02-28 15:54:38 · 264 阅读 · 1 评论 -
LeetCode刷题——209. 长度最小的子数组
题目思路可以利用滑动窗口的思路来解决此问题,即就像一个滑动的窗口,套在一个序列中,左右的滑动,根据窗口内的子序列进行判断。本题先固定数字左端元素,然后右端元素不断右移,直到该子数组满足题意。然后将左端元素右移一个位置,继续此过程。代码class Solution(object): def minSubArrayLen(self, target, nums): """ :type target: int :type nums: List[in原创 2021-02-28 15:18:53 · 251 阅读 · 1 评论 -
LeetCode刷题——11. 盛最多水的容器
题目思路两条垂线,根据短板效应,能盛水的高度是最短的那条垂线,同时,长是两条垂线下标之差。两条垂线,出现数字2,可以考虑碰撞指针。代码class Solution(object): def maxArea(self, height): """ :type height: List[int] :rtype: int """ max_area = 0 i,j = 0,len(height) -1原创 2021-02-26 23:52:00 · 208 阅读 · 0 评论 -
LeetCode刷题——345. 反转字符串中的元音字母
题目思路做这个题需要先知道aeiou就是元音字母。和反转字符串类似,元音字母才需要反转。代码class Solution(object): def reverseVowels(self, s): """ :type s: str :rtype: str """ # print(type(s)) # <type 'unicode'> cs = 'aeiouAEIOU' # 要考虑大小写原创 2021-02-26 23:47:49 · 300 阅读 · 0 评论 -
LeetCode刷题——344. 反转字符串
题目思路反转字符串,不能利用库函数。也可以利用碰撞指针的方式,两个指针的值互换位置。代码class Solution(object): def reverseString(self, s): """ :type s: List[str] :rtype: None Do not return anything, modify s in-place instead. """ i,j = 0,len(s)-1原创 2021-02-26 23:42:51 · 219 阅读 · 0 评论 -
LeetCode刷题——125. 验证回文串
题目思路回文就是从左往右阅读,和从右往左阅读得到的字符串是相等的。题目说只考虑数字和字母,刚好python中有个函数isalnum()可以判断。然后可以利用双指针,判断符号条件的两个指针所在元素是否相等,直到碰撞为止(返回True),或者不相等(返回False)。代码class Solution(object): def isPalindrome(self, s): """ :type s: str :rtype: bool原创 2021-02-26 23:39:45 · 215 阅读 · 0 评论 -
LeetCode刷题——167. 两数之和 II - 输入有序数组
题目思路最简单的方法是两个循环的暴力解法。但是过不了,会报超时。有一点要注意的是,返回的数组索引要加1,因为题目说数组下标从1开始。解法一利用数组的有序性,可以很容易想到二分搜索。那么可以通过一次遍历+二分搜索的方法解决。class Solution(object): def twoSum(self, numbers, target): """ :type numbers: List[int] :type target: int原创 2021-02-26 23:34:27 · 278 阅读 · 3 评论