算法练习|Leetcode49字母异位词分词 ,Leetcode128最长连续序列,Leetcode3无重复字符的最长子串,sql总结

news2024/11/16 9:40:08

目录

  • 一、Leetcode49字母异位词分词
    • 题目描述
    • 解题思路
    • 方法:哈希
    • 总结
  • 二、Leetcode128最长连续序列
    • 题目描述
    • 解题思路
    • 方法:
    • 总结
  • 三、Leetcode3无重复字符的最长子串
    • 题目描述
    • 解题思路
    • 方法:双指针法
    • 总结
    • sql总结

一、Leetcode49字母异位词分词

题目描述

给你一个字符串数组,请你将 字母异位词 组合在一起。可以按任意顺序返回结果列表。

字母异位词 是由重新排列源单词的所有字母得到的一个新单词。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 看到小写字母,想到使用哈希ord
  • 将前面出现过的放在字典,再次出现相同的就append

方法:哈希

  • 要用两次循环做哈希,找到每个单层对应的哈希特征
  • 加入字典
  • 打印字典value
class Solution:
    def groupAnagrams(self, strs: List[str]) -> List[List[str]]:
        mp = defaultdict(list)

        for i in strs:
            # 把每个单词特征存好
            pre = [0] * 26
            for j in i:
                pre[ord(j) - ord("a")] += 1
            # 找之前是否出现过
            mp[tuple(pre)].append(i)

        return list(mp.values())
           

总结

  • 新建字典:mp = defaultdict(list),添加value时默认值是[]
  • 字典的key要唯一,数组作为key要变成元组tuple
  • 最终输出字典的所有value:list(mp.values())


二、Leetcode128最长连续序列

题目描述

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 去重
  • 排序
  • 看下一位是不是当前位+1
  • 更新最大长度

方法:

  • 先用list(set())去重,sort()排序
  • 看下一位是不是当前位+1
  • 更新最大长度
  • 反之,长度变回1
class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        if not nums:
            return 0
            
        nums = list(set(nums))  # 去除重复元素
        nums.sort()
        l = 1
        res = 1
        for i in range(len(nums)):
            cur = nums[i] 
            if (i+1)<len(nums) and nums[i+1] == cur+1:
                l += 1
                res = max(res, l)
            else:
                l = 1

        return res
        

总结

  • 思考要不要排序,排序前要不要去重
  • 去除重复元素再排序!!list(set()),.sort()
  • 注意i+1不要超限!!


三、Leetcode3无重复字符的最长子串

题目描述

给定一个字符串 s ,请你找出其中不含有重复字符的 最长
子串的长度。

在这里插入图片描述

题目链接:力扣题目链接

解题思路

  • 双指针
  • 每走一步,用字典记录字符和下标
  • 出现重复的,移动left,更新right

方法:双指针法

  • 每走一步记录 字符:下标
  • 遇到重复的,left移动到之前记录的重复位置+1
  • 更新当前right位置的字典
  • 更新length
  • right += 1
class Solution:
    def lengthOfLongestSubstring(self, s: str) -> int:
        left, right = 0, 0
        length = 0
        dic = {}
        while right < len(s):
            if s[right] in dic and dic[s[right]] >= left:
                left = dic[s[right]] + 1
            dic[s[right]] = right
            length = max(length, right - left + 1)
            right += 1

        return length
        

总结

  • left的移动:
    字典中先判断有重复元素
    并且重复元素之前出现的位置在left右边
    移动到重复元素的右边一个位置


sql总结

  • 所有情况都满足才返回
    (当一个产品所有发布时间都要在时间范围内才返回id)
    用count检测:having count(x between ’ ’ and ’ ') = count(*)

心得:积累算法还是要多刷题,在进步了!~

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

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

相关文章

数据结构与算法解题-20240422

这里写目录标题 一、2. 两数相加二、67. 二进制求和三、415. 字符串相加四、LCS 01. 下载插件五、71. 简化路径 一、2. 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 …

分享三个转换速度快、准确率高的视频转文字工具

想要直接将视频转换成文字&#xff0c;转换工具很重要&#xff01;给大家分享三个转换速度快、准确率高的视频转文字工具&#xff0c;轻松完成转换。 1.网易见外 https://sight.youdao.com/ 网易家的智能转写翻译服务工作站&#xff0c;网页端就可以直接使用&#xff0c;支持视…

vi, vim,data,wc,系统常用命令-读书笔记(十)

vi 文本编辑器 基本上 vi 共分为三种模式&#xff0c;分别是“一般指令模式”、“编辑模式”与“命令行命令模式”。这三种模式的作用分别是&#xff1a; 一般指令模式&#xff08;command mode&#xff09;以 vi 打开一个文件就直接进入一般指令模式了&#xff08;这是默认的…

Elasticsearch:崭新的打分机制 - Learning To Rank (LTR)

警告&#xff1a;“学习排名 (Learning To Rank)” 功能处于技术预览版&#xff0c;可能会在未来版本中更改或删除。 Elastic 将努力解决任何问题&#xff0c;但此功能不受官方 GA 功能的支持 SLA 的约束。 注意&#xff1a;此功能是在版本 8.12.0 中引入的&#xff0c;并且仅适…

GEE:基于光谱距离度量方法的巴以冲突造成的地表覆盖变化检测

作者:CSDN @ _养乐多_ 本文将介绍如何在 Google Earth Engine (GEE) 平台中使用光谱距离度量方法进行地表覆盖变化检测,并以加沙地区为例,使用Sentinel2数据展示2023年3月和2024年3月的地表覆盖变化区域。 结果如下图所示, 文章目录 一、核心函数1.1 spectralDistance函数…

分布式与一致性协议之拜占庭将军问题(一)

拜占庭将军问题 概述 拜占庭将军问题其实是借拜占庭将军故事展现了分布式共识问题&#xff0c;探讨和论证了解决的办法。实际上&#xff0c;拜占庭将军问题是分布式领域最复杂的一个容错模型&#xff0c;一旦搞懂了它&#xff0c;久能掌握分布式共识问题的解决思路&#xff0…

Java HotSpot(TM) 64-Bit Server VM warning_ Sharing is only supported for boot loader classes because

今天在学习freemarker静态化页面的时候遇到了这个错误&#xff1a; Java HotSpot™ 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 最终我找到了解决办法 解决办法原帖&#xff1a;https://s…

Java中的super

package day33; ​ public class Person {public String name;public int age; ​public Person() {System.out.println("调用了父类的无参构造");} } ​ package day33; ​ public class teacher extends Person{public teacher() {System.out.println("调用了…

C语言--基础面试真题

1、局部变量和静态变量的区别 普通局部变量和静态局部变量区别 存储位置&#xff1a; 普通局部变量存储在栈上 静态局部变量存储在静态存储区 生命周期&#xff1a; 当函数执行完毕时&#xff0c;普通局部变量会被销毁 静态局部变量的生命周期则是整个程序运行期间&#…

【R语言简介】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

微软刚开源就删库的WizardLM-2:MT-Bench 榜单评测超越GPT-4,7B追平Qwen1.5-32B

前言 微软最近发布的WizardLM-2大型语言模型因其先进的技术规格和短暂的开源后突然撤回&#xff0c;引起了科技界的广泛关注。WizardLM-2包括三个不同规模的模型&#xff0c;分别是8x22B、70B和7B&#xff0c;均展现了在多语言处理、复杂对话、推理和代理任务上的卓越能力。 H…

Ardupilot OpenIPC 基于WFB-NG构架分析和数据链路思考

Ardupilot & OpenIPC & 基于WFB-NG构架分析和数据链路思考 1. 源由2. OpenIPC安装2.1 安装2.2 配置2.2.1 天空端配置文件2.2.2 地面端配置文件 2.3 当前配置选择 3. WFB-NG安装3.1 RTL8812AU安装3.1.1 驱动安装3.1.2 定位设备 3.2 wfb-ng安装3.2.1 传输层安装3.2.2 配置…

《架构风清扬-Java面试系列第23讲》如何理解Java的泛型檫除?

晚上好&#xff0c;给大家加个餐 来&#xff0c;思考片刻&#xff0c;说出你的答案 1&#xff0c;什么是泛型檫除&#xff1f; 泛型擦除是指编译器在处理泛型代码时&#xff0c;会在编译阶段移除&#xff08;擦除&#xff09;所有与泛型相关的类型参数信息&#xff0c;将其替换…

3Darray 修改array值然后保存图片

from PIL import Image import numpy as np img_path ./000001.jpg # 读取图片 image Image.open(img_path) width, height image.size print("图片的宽度为{},高度为{}".format(width,height)) print("图片的mode为{}".format(image.mode)) print(&quo…

CSS-vminvmax单位

vmin 和 vmax 单位 vmin 是相对于视口宽度和高度中较小值进行计算&#xff0c;它的值为视口宽度和高度中的较小值的百分比。 例如&#xff0c;如果视口宽度为 800px&#xff0c;高度为 1000px&#xff0c;那么 1vmin 等于 8px&#xff08;800px 的 1%&#xff09;。 vmax 是…

linux下 Mysql8.0 离线安装

环境&#xff1a;centos7.9 MysqlL8.0.36安装包 链接&#xff1a;https://pan.baidu.com/s/1bKwHr05z8Ye82dT9tntdUA 提取码&#xff1a;3a5z 参考Centos安装MYSQL8(离线可用) 文章目录 1、解压安装2、配置启动2.1 修改配置文件2.2 mysql 启动 3、mysql 测试 1、解压安装 #…

Skill Check: Fundamentals of Large Language Models

Skill Check: Fundamentals of Large Language Models 完结&#xff01;

【LLM】向量知识库

文章目录 认识向量知识库向量Embeddings向量数据库向量数据库的作用向量数据库与传统数据库的区别 Embedding API使用公有Embedding API自定义一个Embeedding API 常见文本数据的预处理搭建并使用向量数据库思考向量数据库在LLM中的价值体现向量的妙用&#xff0c;可行&#xf…

2024免费MAC苹果电脑系统优化软件CleanMyMac X

CleanMyMac X确实是一款专为Mac用户设计的清理和优化工具。它提供了一系列功能&#xff0c;旨在帮助用户释放磁盘空间、提升Mac的性能&#xff0c;并保护用户的隐私。 CleanMyMac X能够智能地扫描和识别Mac上的各种垃圾文件&#xff0c;如系统缓存、日志文件、无用的语言包等&…

【存储】cosbench对象存储测试工具

目录 简略说明 原理 用法 详细说明 简介 用法 一 安装 二 简单验证 三 编写配置文件 四 提交配置文件下IO 五 测试结果查看 结果概览 查看详情 每秒钟的io情况查看 工作负载配置 参数配置&#xff08;controller和driver&#xff09; 查看错误的方法和错误记录 查看错误的方法 …