刷Leetcode算法的第六天

今天是刷LT的一天,好好干饭,好好努力,好好加油哦l

leetcode题目:
给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度
例子

输入:nums = [3,2,2,3], val = 3
输出:2
输入:nums = [0,1,2,2,3,0,4,2], val = 2
输出:5

这里也是用到pop函数,遍历nums的元素,如果元素与val一致,则pop走该元素。
pop() 函数用于移除列表中的一个元素(默认最后一个元素)
并且返回被删除元素的值,例子如下:

test = ['Google', 'Runoob', 'Taobao']
list_pop=test.pop()
print( "删除的项为 :", list_pop)
输出:
删除的项为 : Taobao

但是如果直接从前面来pop相同元素,即:

 L = len(nums)-1
 for i in range(L):
 	if (nums[i-j] == val): 
      nums.pop(i)

这样会导致每次pop一个元素出去,nums的其他元素位置往前进一位。然后pop函数会出现这样的error:IndexError: pop index out of range
所以,为了保持nums的元素位置,则从后面尾巴开始遍历,然后再pop元素,这样就不会影响前面的元素。

def removeElement(nums, val) -> int:
    L = len(nums)-1
    for i in range(L, -1, -1):
    #从尾巴开始遍历
        if(nums[i] == val):
            nums.pop(i)
    return len(nums)

leetcode题目:
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。

例子:

输入: J = "aA", S = "aAAbbbb"
输出: 3
输入: J = "z", S = "ZZ"
输出: 0

直接把jewels用set函数放入列表,然后开始遍历stones,如果在列表里,即加上1

def numJewelsInStones(jewels, stones):
	j = set(jewels)
    d = 0 
    for s in stones:
    	if s in j:
    		d += 1 
  return d

猜你喜欢

转载自blog.csdn.net/Jiana_Feng/article/details/115018706