码迷,mamicode.com
首页 > 其他好文 > 详细

双指针应用--快慢指针

时间:2020-07-12 17:18:27      阅读:71      评论:0      收藏:0      [点我收藏+]

标签:contain   data   转换   find   nes   element   pre   自增   css   

1、给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。

算法思路:新数组: nums[0.......l]

def removeElement(nums,val):
#想象一个新数组nums[0....l],其索引从0...l。 l
=0 #遍历现数组,找出不等于val的数,然后赋值给新数组。 for r in range(len(nums)): if nums[r]!=val: #赋值. nums[l]=nums[r] l+=1 return l nums = [0,1,2,2,3,0,4,2] val=2 print(removeElement(nums,val))

2、给定一个二进制数组, 计算其中最大连续1的个数。 输入: [1,1,0,1,1,1]  输出: 3。

    算法思路:初始化count=0用于记录1的个数,初始化res=0用来记录连续1的个数。指针 i 用于遍历数组,遇到1,count自增。遇到 0,count归零。res=max(res,count)。

def findMaxConsecutiveOnes(nums):
    if 1 not in nums:
        return 0
    else:
        n=len(nums)
        count=0
        res=0
        for i in range(len(nums)):
            if nums[i]!=0:
                count+=1
                res=max(res,count)
            if nums[i]==0:
                count=0
        return res


nums=[1,1,0,1,1,1]
print(findMaxConsecutiveOnes(nums))

3、给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。

输入: "Let‘s take LeetCode contest" 输出: "s‘teL ekat edoCteeL tsetnoc"
算法思路:将字符串转换成列表。想象一个新的列表,索引 0....j。遍历现列表,翻转其中的元素,然后赋值给新列表。
def reverseWords(s):
    s=s.split()
    n=len(s)
    j=0
    for i in range(n):
        s[j]=s[i][::-1]
        j+=1
    return " ".join(s)
    
s="Let‘s take LeetCode contest"
print(reverseWords(s))

4、删除排序数组中的重复项。

 

 


双指针应用--快慢指针

标签:contain   data   转换   find   nes   element   pre   自增   css   

原文地址:https://www.cnblogs.com/yijierui/p/13288637.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!