LeetCode 每日一题 2025/2/3-2025/2/9

news2025/2/12 5:20:09

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • 2/3 680. 验证回文串 II
      • 2/4 922. 按奇偶排序数组 II
      • 2/5 90. 子集 II
      • 2/6 47. 全排列 II
      • 2/7 59. 螺旋矩阵 II
      • 2/8 63. 不同路径 II
      • 2/9 80. 删除有序数组中的重复项 II


2/3 680. 验证回文串 II

头尾比较 可以有一次误差 遇到不一致时
分两种情况 去掉left或者去掉right 其中一种满足就可

def validPalindrome(s):
    """
    :type s: str
    :rtype: bool
    """
    def sub(s):
        if len(s)==0 or len(s)==1:
            return True
        i,j=0,len(s)-1
        while i<j:
            if s[i]!=s[j]:
                return False
            else:
                i+=1
                j-=1
        return True
    i,j=0,len(s)-1
    while i<j:
        if s[i]!=s[j]:
            return sub(s[i+1:j+1]) or sub(s[i:j])           
        else:
            i+=1
            j-=1
    return True

def validPalindrome2(s):
    """
    :type s: str
    :rtype: bool
    """
    if s==s[::-1]:
        return True
    i,j=0,len(s)-1
    while i<j:
        if s[i]==s[j]:
            i+=1
            j-=1
        else:
            tmp = s[:i]+s[i+1:]
            if tmp==tmp[::-1]:
                return True
            tmp = s[:j]+s[j+1:]
            if tmp==tmp[::-1]:
                return True
            return False




2/4 922. 按奇偶排序数组 II

  1. 分奇数偶数两个list 在偶数list中的奇数位 插入奇数
  2. 用ij记录偶数奇数位置 遍历list 如果是偶数放入i位置 奇数放入j位置
  3. 遍历一次数组
    使用ji,ou两个数组记录不符合未知的数
    遇到不符合位置的数时 从ji,ou数组中找到时候存在可交换的位置 有则交换 无则将该位置放入数组
def sortArrayByParityII(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    odd = [x for x in nums if x%2==1]
    ans = [x for x in nums if x%2==0]
    
    p = 1
    for i in odd:
        ans.insert(p,i)
        p+=2
    return ans

def sortArrayByParityII2(nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    i,j=0,1
    ans = [0]*len(nums)
    for x in nums:
        if x%2==0:
            ans[i]=x
            i+=2
        else:
            ans[j]=x
            j+=2

def sortArrayByParityII3( nums):
    """
    :type nums: List[int]
    :rtype: List[int]
    """
    ji=[]
    ou=[]
    for i in range(len(nums)):
        if i%2!=nums[i]%2:
            if i%2==0:
                if len(ji)>0:
                    loc = ji.pop()
                    nums[loc],nums[i]=nums[i],nums[loc]
                else:
                    ou.append(i)
            else:
                if len(ou)>0:
                    loc = ou.pop()
                    nums[loc],nums[i]=nums[i],nums[loc]
                else:
                    ji.append(i)
    return nums



2/5 90. 子集 II

set 记录重复

def subsetsWithDup(nums):
    """
    :type nums: List[int]
    :rtype: List[List[int]]
    """
    ret = []
    ret.append([])
    ck = set()
    for num in nums:
        l = []
        for tmp in ret:
            x = tmp[:]
            x.append(num)
            t = tuple(sorted(x))
            if t not in ck:
                l.append(x)
                ck.add(t)     
        ret.extend(l)
    return ret




2/6 47. 全排列 II

统计每个数字出现次数 回溯

def permuteUnique(nums):
    """
    :type nums: List[int]
    :rtype: List[List[int]]
    """
    m={}
    for i in nums:
        m[i] = m.get(i,0)+1
    n = len(nums)
    ret = []
    def back(m,l):
        if len(l)==n:
            ret.append(l)
            return
        for c in m:
            if m[c]>0:
                m[c]-=1
                l.append(c)
                back(m,l[:])
                l.pop()
                m[c]+=1
        
    back(m,[])
    return ret



2/7 59. 螺旋矩阵 II

顺指针可以 → ↓ ← ↑ 分别对应四种坐标变化(0,1),(1,0),(0,-1),(-1,0)
从→开始 如果遇到边界或者重复则改为下一种走法

def generateMatrix(n):
    """
    :type n: int
    :rtype: List[List[int]]
    """
    matrix = [[0]*n for _ in range(n)]
    steplist =[(0,1),(1,0),(0,-1),(-1,0)]
    step = 0
    
    num=2
    i,j=0,0
    matrix[0][0]=1
    while num<=n*n:
        x,y = steplist[step]
        
        ti,tj = i+x,j+y
        if ti<0 or tj<0 or ti>=n or tj>=n or matrix[ti][tj]>0:
            step = (step+1)%4
            continue
        i,j = ti,tj
        matrix[i][j] = num
        num+=1
    return matrix



2/8 63. 不同路径 II

抵达当前位置的路径数量为 左侧位置和上方位置数量之和

def uniquePathsWithObstacles(obstacleGrid):
    """
    :type obstacleGrid: List[List[int]]
    :rtype: int
    """
    m,n=len(obstacleGrid),len(obstacleGrid[0])
    ans = [[0]*n for _ in range(m)]
    for i in range(m):
        if obstacleGrid[i][0]==0:
            ans[i][0]=1
        else:
            break
    for j in range(n):
        if obstacleGrid[0][j]==0:
            ans[0][j]=1
        else:
            break
    for i in range(1,m):
        for j in range(1,n):
            if obstacleGrid[i][j]==0:
                ans[i][j]=ans[i-1][j]+ans[i][j-1]
    return ans[-1][-1]



2/9 80. 删除有序数组中的重复项 II

1.使用map记录重复
2.查看与前两位的比较 是否重复两次以上

def removeDuplicates(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    m={}
    loc =0
    for i in range(len(nums)):
        if m.get(nums[i],0)>=2:
            continue
        m[nums[i]] = m.get(nums[i],0)+1
        nums[loc] = nums[i]
        loc+=1
    return loc


def removeDuplicates2(nums):
    """
    :type nums: List[int]
    :rtype: int
    """
    if len(nums)<3:
        return len(nums)
    loc =2
    for i in range(2,len(nums)):
        if nums[loc-2]==nums[i]:
            continue
        nums[loc] = nums[i]
        loc+=1
    return loc



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动驾驶数据集三剑客:nuScenes、nuImages 与 nuPlan 的技术矩阵与生态协同

目录 1、引言 2、主要内容 2.1、定位对比&#xff1a;感知与规划的全维覆盖 2.2、数据与技术特性对比 2.3、技术协同&#xff1a;构建全栈研发生态 2.4、应用场景与评估体系 2.5、总结与展望 3、参考文献 1、引言 随着自动驾驶技术向全栈化迈进&#xff0c;Motional 团…

DeepSeekMoE 论文解读:混合专家架构的效能革新者

论文链接&#xff1a;DeepSeekMoE: Towards Ultimate Expert Specialization in Mixture-of-Experts Language Models 目录 一、引言二、背景知识&#xff08;一&#xff09;MoE架构概述&#xff08;二&#xff09;现有MoE架构的问题 三、DeepSeekMoE架构详解&#xff08;一&a…

【python】简单的flask做页面。一组字母组成的所有单词。这里的输入是一组字母,而输出是所有可能得字母组成的单词列表

目录结构如下&#xff1a; https://github.com/kaede316/Pythons_pj.git 效果&#xff1a; 后续可扩展为工具网站&#xff1a; 更新 2025.02.09 1、增加等间距制作人 时间信息 2、增加判断润年的功能

[权限提升] Linux 提权 维持 — 系统错误配置提权 - Sudo 滥用提权

关注这个专栏的其他相关笔记&#xff1a;[内网安全] 内网渗透 - 学习手册-CSDN博客 0x01&#xff1a;Sudo 滥用提权原理 Sudo 是一个 Linux 系统管理命令&#xff0c;它允许系统管理员授予普通用户以指定身份执行指定命令的权限。该命令不仅减少了 Root 用户的登录时间和管理时…

如何修改IDEA的maven远程仓库地址

IDEA自动的maven的远程仓库地址为国外地址&#xff0c;导致下载依赖时很慢&#xff0c;通过如下方法可以将其修改为国内地址 选中模块&#xff0c;右击&#xff0c;创建setting.xml文件 添加阿里仓库地址 <mirrors><mirror><id>nexus-aliyun</id><…

LLMs之DeepSeek r1:TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略

LLMs之DeepSeek r1&#xff1a;TinyZero(复现 DeepSeek R1 Zero 的核心功能)的简介、安装和使用方法、案例应用之详细攻略 目录 TinyZero的简介 1、TinyZero的特点 TinyZero的安装和使用方法 1、安装 创建 conda 环境 数据准备 (倒计时任务) 训练执行 单GPU (适用于模型…

亚博microros小车-原生ubuntu支持系列:23 人脸识别追踪

背景知识&#xff1a; 本节跟上一篇的物体识别追踪类似&#xff0c;换了opencv的函数来做人脸识别 函数定义如下&#xff1a; detectMultiScale(image, scaleFactor, minNeighbors, flags, minSize, maxSize)scaleFactor参数控制每个图像序列的缩放比例。该参数决定了在每个…

微信小程序调用企业微信客户服务插件联通企业微信客服

需求背景:用户在小程序页面点击按钮添加企业微信的客服 相关技术:基于uniapp开发的微信小程序 插件名称:企业微信客户服务插件「联系我」插件 - 文档 - 企业微信开发者中心 仔细阅读文档「联系我」插件 - 文档 - 企业微信开发者中心 以下是我的实例代码 1.首先先小程序管…

【AI实践】deepseek支持升级git

当前Windows 11 WSL的git是2.17&#xff0c;Android Studio提示需要升级到2.19版本 网上找到指导文章 安装git 2.19.2 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.19.2.tar.gz tar xzf git-2.19.2.tar.gz cd git-2.19.2 make prefix/usr/l…

Maven 安装配置(完整教程)

文章目录 一、Maven 简介二、下载 Maven三、配置 Maven3.1 配置环境变量3.2 Maven 配置3.3 IDEA 配置 四、结语 一、Maven 简介 Maven 是一个基于项目对象模型&#xff08;POM&#xff09;的项目管理和自动化构建工具。它主要服务于 Java 平台&#xff0c;但也支持其他编程语言…

w196Spring Boot高校教师科研管理系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

(1/100)每日小游戏平台系列

每日小游戏平台 项目简介以及地址 准备开发一个一百天小游戏平台&#xff0c;使用Flask构建的简单游戏导航网站&#xff0c;无需登录&#xff0c;让大家在返工的同时也可以愉快的摸鱼玩耍。 每天更新一个小游戏上传&#xff0c;看看能不能坚持一百天。 这些小游戏主要使用前端…

IMX6ULL环境搭建遇到的问题和解答更新

IMX6ULL环境搭建遇到的问题 开发板&#xff1a;正点原子IMX6ULL 终端软件串口控制&#xff1a;MobaXterm 1、网络环境搭建三方互ping不通 电脑无网口&#xff0c;使用绿联USB转网口&#xff0c;接网线直连开发板&#xff0c;电脑WiFi上网 按文档设置的 IP 地址&#xff0c;以…

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索&#xff08;BFS&#xff09;是一种广泛应用于图论中的算法&#xff0c;常用于寻找最短路径、图的遍历等问题。与深度优先搜索&#xff08;DFS&…

Django开发入门 – 0.Django基本介绍

Django开发入门 – 0.Django基本介绍 A Brief Introduction to django By JacksonML 1. Django简介 1) 什么是Django? 依据其官网的一段解释&#xff1a; Django is a high-level Python web framework that encourages rapid development and clean, pragmatic design. …

idea整合deepseek实现AI辅助编程

1.File->Settings 2.安装插件codegpt 3.注册deepseek开发者账号&#xff0c;DeepSeek开放平台 4.按下图指示创建API KEY 5.回到idea配置api信息&#xff0c;File->Settings->Tools->CodeGPT->Providers->Custom OpenAI API key填写deepseek的api key Chat…

加速汽车软件升级——堆栈刷写技术的应用与挑战

一、背景和挑战 | 背景&#xff1a; 当前汽车市场竞争激烈&#xff0c;多品牌并存&#xff0c;新车发布速度加快&#xff0c;价格逐渐降低&#xff0c;功能日益多样化。随着车辆功能的不断提升与优化&#xff0c;ECU&#xff08;电子控制单元&#xff09;的代码量也随之增加&…

2. UVM的基本概念和架构

文章目录 前言1. UVM的基本概念1.1 UVM的核心组件1.2 UVM的基本架构1.3 UVM的工作流程 2. UVM的架构2.1 UVM的层次结构2.2 UVM的组件交互 3. 总结 前言 首先&#xff0c;得确定UVM的基本概念和架构包含哪些关键部分。我回忆起UVM的核心组件&#xff0c;比如uvm_component、uvm…

【力扣】138.随机链表的复制

AC截图 题目 代码 使用哈希存储<旧节点&#xff0c;新结点> /* // Definition for a Node. class Node { public:int val;Node* next;Node* random;Node(int _val) {val _val;next NULL;random NULL;} }; */class Solution { public:Node* copyRandomList(Node* hea…

归一化与伪彩:LabVIEW图像处理的区别

在LabVIEW的图像处理领域&#xff0c;归一化&#xff08;Normalization&#xff09;和伪彩&#xff08;Pseudo-coloring&#xff09;是两个不同的概念&#xff0c;虽然它们都涉及图像像素值的调整&#xff0c;但目的和实现方式截然不同。归一化用于调整像素值的范围&#xff0c…