Leetcode TOP5 题目和解答:这里只提供一种解题思路,希望引导大家持续学习,可以采用FlowUs息流记录自己的学习

news2024/12/25 13:43:00

LeetCode 是一个在线编程平台,它提供了大量的算法题目供用户练习。

TOP5题目通常指的是 LeetCode 网站上最受欢迎的前5道题目。

以下是 LeetCode TOP5 题目的列表以及它们常见的解题思路和代码示例。

题目1 两数之和

两数之和 - 1. Two Sum

Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

You can return the answer in any order.

Example 1:

Input: nums = [2,7,11,15], target = 9
Output: [0,1]
Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].

Example 2:

Input: nums = [3,2,4], target = 6
Output: [1,2]

Example 3:

Input: nums = [3,3], target = 6
Output: [0,1]

Constraints:

  • 2 <= nums.length <= 104
  • -109 <= nums[i] <= 109
  • -109 <= target <= 109
  • Only one valid answer exists.


  • 解题思路:使用哈希表存储遍历过的数字及其索引,对于每个数字,检查目标值(当前数字的和)是否在哈希表中。
def twoSum(nums, target):
    hash_map = {}
    for i, num in enumerate(nums):
        if target - num in hash_map:
            return [hash_map[target - num], i]
        hash_map[num] = i

题目14 最长公共前缀

最长公共前缀 - 14. Longest Common Prefix
 

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".

Example 1:

Input: strs = ["flower","flow","flight"]
Output: "fl"

Example 2:

Input: strs = ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.

Constraints:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] consists of only lowercase English letters.


  • 解题思路:使用横向扫描的方法,逐个字符比较所有字符串,直到遇到不匹配的字符。
def longestCommonPrefix(strs):
    if not strs: return ""
    shortest_str = min(strs, key=len)
    for i, char in enumerate(shortest_str):
        for other in strs:
            if other[i] != char:
                return shortest_str[:i]
    return shortest_str

题目3 无重复字符的最长子串
 3. Longest Substring Without Repeating Characters
 

Given a string s, find the length of the longest 

substring

 without repeating characters.

Example 1:

Input: s = "abcabcbb"
Output: 3
Explanation: The answer is "abc", with the length of 3.

Example 2:

Input: s = "bbbbb"
Output: 1
Explanation: The answer is "b", with the length of 1.

Example 3:

Input: s = "pwwkew"
Output: 3
Explanation: The answer is "wke", with the length of 3.
Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.

Constraints:

  • 0 <= s.length <= 5 * 104
  • s consists of English letters, digits, symbols and spaces.

  • 解题思路:使用滑动窗口,记录窗口内字符的索引,如果遇到重复字符,移动窗口的左边界。

def lengthOfLongestSubstring(s):
    char_map = {}
    start = maxLength = 0
    for end in range(len(s)):
        if s[end] in char_map and char_map[s[end]] >= start:
            start = char_map[s[end]] + 1
        char_map[s[end]] = end
        maxLength = max(maxLength, end - start + 1)
    return maxLength

题目4 寻找两个正序数组的中位数

- 4. Median of Two Sorted Arrays
 

Given two sorted arrays nums1 and nums2 of size m and n respectively, return the median of the two sorted arrays.

The overall run time complexity should be O(log (m+n)).

Example 1:

Input: nums1 = [1,3], nums2 = [2]
Output: 2.00000
Explanation: merged array = [1,2,3] and median is 2.

Example 2:

Input: nums1 = [1,2], nums2 = [3,4]
Output: 2.50000
Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.

Constraints:

nums1.length == m

nums2.length == n

0 <= n <= 1000

0 <= m <= 1000

1 <= m + n <= 2000

-10^6 <= nums1[i], nums2[i] <= 10^6
 

  • 解题思路:使用二分查找法来找到两个数组的分割点,使得左边的和等于右边的和,或者左边的和比右边的和多1。

def findMedianSortedArrays(nums1, nums2):
    nums1, nums2 = sorted(nums1 + nums2)
    return (nums1[len(nums1) // 2] + nums1[(len(nums1) - 1) // 2]) / 2

题目10 正则表达式匹配
 

10. 正则表达式匹配

给你一个字符串 s 和一个字符规律 p,请你来实现一个支持 '.' 和 '*' 的正则表达式匹配。

  • '.' 匹配任意单个字符
  • '*' 匹配零个或多个前面的那一个元素

所谓匹配,是要涵盖 整个 字符串 s的,而不是部分字符串。

示例 1:

输入:s = "aa", p = "a"
输出:false
解释:"a" 无法匹配 "aa" 整个字符串。

示例 2:

输入:s = "aa", p = "a*"
输出:true
解释:因为 '*' 代表可以匹配零个或多个前面的那一个元素, 在这里前面的元素就是 'a'。因此,字符串 "aa" 可被视为 'a' 重复了一次。

示例 3:

输入:s = "ab", p = ".*"
输出:true
解释:".*" 表示可匹配零个或多个('*')任意字符('.')。

提示:

  • 1 <= s.length <= 20
  • 1 <= p.length <= 20
  • s 只包含从 a-z 的小写字母。
  • p 只包含从 a-z 的小写字母,以及字符 . 和 *
  • 保证每次出现字符 * 时,前面都匹配到有效的字符
    解题思路:使用动态规划,创建一个二维数组 dp,其中 dp[i][j] 表示字符串 s 的前 i 个字符与字符串 p 的前 j 个字符是否匹配。
    def isMatch(s, p):
        dp = [[False] * (len(p) + 1) for _ in range(len(s) + 1)]
        dp[0][0] = True
        for j in range(2, len(p) + 1):
            if p[j - 1] == '*':
                dp[0][j] = dp[0][j - 2]
        for i in range(1, len(s) + 1):
            for j in range(1, len(p) + 1):
                if p[j - 1] == '*':
                    dp[i][j] = dp[i][j - 2] or (s[i - 1] == p[j - 2] or p[j - 2] == '.') and dp[i - 1][j]
                else:
                    dp[i][j] = dp[i - 1][j - 1] and (s[i - 1] == p[j - 1] or p[j - 1] == '.')
        return dp[-1][-1]

    FlowUs 是一款灵活的笔记和知识管理工具,它提供了多种功能,使得工程师和其他专业人士能够记录和组织他们的代码、学习笔记和思考。以下是一些FlowUs的主要特点,以及它们如何帮助工程师进行记录和思考:

  • 多维数据视图:FlowUs 支持多种数据视图,如列表视图、看板视图、日历视图等,这使得用户可以根据自己的需求灵活地组织信息。

  • 嵌入代码块:FlowUs 允许用户在笔记中嵌入代码块,这对于记录代码片段、代码示例或者编程思想非常有用。

  • Markdown 支持:FlowUs 支持 Markdown 语法,这意味着用户可以使用简洁的格式来编写笔记,包括格式化文本、链接、列表等。

  • 知识库构建:用户可以在 FlowUs 中创建知识库,将相关的笔记和文档组织在一起,构建一个系统化的知识体系。

  • 团队协作:FlowUs 支持团队协作功能,工程师可以与团队成员共享笔记、文档和代码,实现知识的共享和团队协作。

  • 集成第三方服务:FlowUs 可以与许多第三方服务集成,如GitHub、Google Drive等,方便用户将外部资源链接到笔记中。

  • 自定义工作流:用户可以根据自己的工作流程自定义 FlowUs 的使用方式,比如设置提醒、自动化任务等。

  • 移动和桌面应用:FlowUs 提供了移动和桌面应用,使用户可以在任何设备上访问和编辑他们的笔记。

  • 数据安全:FlowUs 提供数据加密和备份功能,确保用户数据的安全性。

  • 学习和思考记录:工程师不仅可以记录代码,还可以记录学习过程中的思考、问题和解决方案,帮助他们更好地理解和掌握新知识。

    FlowUs 的这些功能使得它成为工程师和其他专业人士进行知识管理和个人生产力提升的有力工具。

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

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

相关文章

Databend 怎么看 OpenAI 收购实时数仓 Rockset?

6月21日(上周五)&#xff0c;OpenAI 官方宣布完成对实时分析数据库 Rockset 的收购&#xff0c;一时引起数据库圈和 AI 圈热议&#xff0c;很多朋友也来询问 Databend 如何看待这个事件。这次收购表明了市场对实时数据分析和数据处理解决方案的高度重视&#xff0c;数据是 AI 发…

我在高职教STM32——GPIO入门之按键输入(1)

大家好&#xff0c;我是老耿&#xff0c;高职青椒一枚&#xff0c;一直从事单片机、嵌入式、物联网等课程的教学。对于高职的学生层次&#xff0c;同行应该都懂的&#xff0c;老师在课堂上教学几乎是没什么成就感的。正因如此&#xff0c;才有了借助 CSDN 平台寻求认同感和成就…

android 通过gradle去除aar的重复资源图片

背景&#xff1a;项目中引入了aar包&#xff0c;结果导致资源出问题了&#xff0c;于是需要对下面aar包进行重复资源去除操作 操作具体如下&#xff1a; 目录&#xff1a;app/build.gradle 末尾配置 apply from: "${project.rootDir}/scripts/excludewidgetAar.gradle&qu…

【文件夹加密】文件夹怎么加密码,快来试试这4个方法

文件夹怎么加密&#xff1f;在日常工作中&#xff0c;为了保护我们的文件数据、隐私信息不被泄露&#xff0c;因此文件夹加密非常有必要。文件夹加密技术是通过特定的算法改变文件夹中文件的信息数据&#xff0c;使未授权的用户即使获得了已加密的文件或文件夹&#xff0c;也因…

已解决javax.security.auth.DestroyFailedException:在尝试销毁某个对象时失败的正确解决方法,亲测有效!!!

已解决javax.security.auth.DestroyFailedException&#xff1a;在尝试销毁某个对象时失败的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 报错原因 解决思路 解决方法 检查对象状态 确认权限设置 检查资源锁定情况 修正实现…

Windows环境下安装MySQL数据库的步骤

说明&#xff1a; 由于环境的不同&#xff0c;安装过程中可能会遇到各种各样的问题&#xff0c;不用慌&#xff0c;先根据错误提示搜索&#xff0c;多试一下。 安装前&#xff0c;请先认真看一下&#xff0c;有可能会遇到的几个问题&#xff1a; 1、证书链问题&#xff0c;一般…

【PyScript】PyScript 基础入门

【PyScript】PyScript 基础入门 PyScript 是一个为了支持 Python 运行在浏览器的开源平台。 1.PyScript 应用程序的创建 PyScript 程序需要以下三个内容 一个提供给浏览器的 index.html 文件。PyScript 的运行环境描述&#xff0c;通常是一个 pyscript.json 或 pyscript.to…

7km远距离WiFi实时图传模块,无人机海上无线传输方案,飞睿智能WiFi MESH自组网技术

在浩瀚无垠的海洋上&#xff0c;无人机正在开启一场前所未有的技术创新。它们不再只是天空的舞者&#xff0c;更是海洋的守望者&#xff0c;为我们带来前所未有的视野和数据。而这一切的背后&#xff0c;都离不开一项创新性的技术——飞睿智能远距离WiFi实时图传模块与无线Mesh…

热门开源Text2SQL框架

Chat2DB 项目地址&#xff1a;https://github.com/chat2db/Chat2DB简介&#xff1a;Chat2DB是一个通用的SQL客户端和数据分析工具&#xff0c;能够辅助生成SQL&#xff0c;同时支持对话式的数据分析功能&#xff0c;提供了网页、客户端2种使用方式&#xff0c;它支持几乎所有流…

[图解]SysML和EA建模住宅安全系统-01-包图

1 00:00:01,400 --> 00:00:04,870 得到这个之后&#xff0c;我们就来画我们的包图了 2 00:00:05,350 --> 00:00:07,940 我们来看包图的内容 3 00:00:09,750 --> 00:00:12,430 名字是这个&#xff0c;模型组织 4 00:00:13,820 --> 00:00:20,570 然后上面&#xf…

Xilinx FPGA:vivado用串口控制数码管

一、项目要求 要求输入从千位到个位数字给4位数码管&#xff0c;要求分别输入的数字都能显示 二、关键信号流向 三、程序设计 顶层&#xff1a; timescale 1ns / 1ps module TOP(input sys_clk ,input rst_n ,input rx_…

基于LangChain构建RAG应用

前言 Hello&#xff0c;大家好&#xff0c;我是GISer Liu&#x1f601;&#xff0c;一名热爱AI技术的GIS开发者&#xff0c;上一篇文章中我们详细介绍了RAG的核心思想以及搭建向量数据库的完整过程&#xff1b;&#x1f632; 本文将基于上一篇文章的结果进行开发&#xff0c;主…

@RequestParam注解的使用及源码解析

前言 RequestParam 注解是我们进行JavaEE开发&#xff0c;最常见的几个注解之一&#xff0c;这篇博文我们以案例和源码相结合&#xff0c;帮助大家更好的了解RequestParam 注解 使用案例 1.获取 URL 上的值 GetMapping("/simple") public String simple(RequestP…

MySQL自学教程:1. MySQL简介与安装

MySQL简介与安装 一、MySQL简介二、MySQL安装(一)Windows系统上的安装(二)Linux系统上的安装(以Ubuntu为例)(三)Mac OS系统上的安装三、安装后的基本配置四、总结一、MySQL简介 MySQL是一个流行的开源关系型数据库管理系统(RDBMS),广泛应用于各种业务场景,从小型个…

2024肥晨赠书活动第三期:《前端工程化:基于Vue.js 3.0的设计与实践》

文章目录 内容简介作者简介关于《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》文章目录文章简介《前端工程化&#xff1a;基于Vue.js 3.0的设计与实践》全书速览结束语 内容简介 本书以Vue.js的3.0版本为核心技术栈&#xff0c;围绕“前端工程化”和TypeScript的知识点…

保姆级本地部署Qwen2

重点&#xff1a;Qwen2提供了CPU与GPU两种运行方式 运行成功效果图&#xff1a; 前提说明&#xff1a;如果需要用GPU&#xff0c;那么请在物理机安装ubuntu系统&#xff0c;不然显卡驱动很难安装&#xff0c;不建议新手部署。训练微调模型需要用到GPU。本文仅以ubuntu系统演示…

vue3+ts <script setup lang=“ts“> element-plus的el-date-picker设置默认日期

效果图&#xff08;单个日期&#xff09;&#xff1a; utils.ts&#xff1a; /*** 格式化时间戳* param {number} timestamp 时间戳* param {string} format 格式* returns {string}*/ export const formatTimeStamp (timestamp: number, format: string) > {if (!timesta…

Python魔法参数:深入解析*args和**kwargs的强大用途

目录 引言 基础概念解析 *args:处理位置参数 **kwargs:处理关键字参数 *args和**kwargs的实际应用场景 1. 函数装饰器中使用*args和**kwargs 2. 类构造函数中使用*args和**kwargs 3. API调用中使用**kwargs 与其他参数类型的结合使用 结合默认参数 位置参数与关键…

利用powershell开展网络钓鱼

要确保人们打开我们的恶意文件并执行它们&#xff0c;我们只需让微软努力工作多年来赢得人们的信任&#xff0c;然后将一些危险的宏插入到幻灯片中。 本博文将介绍如何通过屏幕顶部的一个友好的警告提示&#xff0c;在用户启用宏后立即运行您的宏。 首先&#xff0c;我们需要打…

pytest-yaml-sanmu(五):跳过执行和预期失败

除了手动注册标记之外&#xff0c;pytest 还内置了一些标记可直接使用&#xff0c;每种内置标记都会用例带来不同的特殊效果&#xff0c;本文先介绍 3 种。 1. skip skip 标记通常用于忽略暂时无法执行&#xff0c;或不需要执行的用例。 pytest 在执行用例时&#xff0c;如果…