自我监督刷题记录处3

自我监督刷题记录处3

第3天。。决定先从基础算法分类做起,可能更有逻辑性?

Leetcode 28 strStr()

(Easy Level)

class Solution:
    def strStr(self, haystack: str, needle: str) -> int:
    	len_h = len(haystack)
    	len_n = len(needle)
    	pointer = 0
		
		#特殊情况,所查看的被包含对象为空,或包含对象小于被包含对象
		if len_n == 0return 0
		if len_h == o or len_h < len_n:
			return -1
		
		#循环needle的长度次就可以判断
		while pointer <= len_h - len_n:
			#分别对比被包含对象数位直到剩下其长度位置
			if len_h[pointer] == len_n[0]:
				#如果首位一致,判断后面的needle长中str是否一样
				if len[pointer:pointer + len_n) == needle:
					return pointer
				else:
					#后面str不一样,指针右移
					pointer +=1
			else:
				#首位不一样,指针右移
				pointer +=1
		return -1

评论里说这是道KMP算法题,但我two pointer更容易想一些。

Leetcode 112 Max Profit

(Easy Level)

class Solution:
    def maxProfit(self, prices: List[int]) -> int:
    	profit = 0
    	for i in range (1,len(prices)):
    		#直接对比两日价格
    		if prices[i] > prices[i-1]:
    			return profit += prices[i] - prices[i-1]
    	return profit

贪心算法很经典的一道题,稍微整理一下就可以变得很短
~(❤ ω ❤),今天真的偷懒了

Leetcode 189 Rotate Array

(Easy Level)

#1.拼接
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
    	n = len(nums)
    	k = k % n
		nums[:] = nums[-k:] + nums[:-k]

#2.插入
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
    n = len(nums)
    k = k % n
    for _ in range(k):
    	nums.insert(0,nums.pop())
    
#3 切片
class Solution:
    def rotate(self, nums: List[int], k: int) -> None:
    n = len(nums)
    k = k % n
    nums[:] = nums[::-1]
    nums[:k] = nums[:k][::-1]
    nums[k:] = nums[k:][::-1]

三种方法差不多就够了,曾经在面试的时候碰到过,虽然代码很简单,但题目是很经典的。属于高频题目

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值