2024.3.29力扣刷题记录(未完)

一、941. 有效的山脉数组

遍历

class Solution:
    def validMountainArray(self, arr: List[int]) -> bool:
        # 遍历
        n = len(arr)
        if n < 3 or arr[0] >= arr[1]:
            return False
        flag = False
        pre = arr[0]    
        for i in range(1,n):
            now = arr[i]    #存储避免多次调用
            if now == pre:
                return False
            if now < pre:   #出现峰顶
                flag = True
            if flag and now > pre:  #出现峰顶后又有上升趋势
                return False
            pre = now
        return flag

二、1389. 按既定顺序创建目标数组

模拟

class Solution:
    def createTargetArray(self, nums: List[int], index: List[int]) -> List[int]:
        # 模拟 时复O(n^2)
        ans = []
        for x,idx in zip(nums,index):
            ans.insert(idx,x)
        return ans

三、1508. 子数组和排序后的区间和

1.模拟

class Solution:
    def rangeSum(self, nums: List[int], n: int, left: int, right: int) -> int:
        # 模拟
        # 时复O(n^2*logn),时复O(n^2)
        ans = []
        for i in range(n):
            s = 0
            for j in range(i,n):
                s += nums[j]
                ans.append(s)
        ans.sort()
        return sum(ans[left-1:right]) % (10**9+7)

2.二分查找 + 前缀和

(在学习中)

(未完待续)

感谢你看到这里!一起加油吧!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值