力扣刷题之旅:启程篇(一)

        力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。       
 

 --点击进入刷题地址


 1. 两数之和

题目描述

        给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。

示例:
给定 nums = [2, 7, 11, 15], target = 9  因为 nums[0] + nums[1] = 2 + 7 = 9  
所以 返回 [0, 1]
def twoSum(nums, target):  num_dict = {}  for i, num in enumerate(nums):  if target - num in num_dict:  return [num_dict[target - num], i]  num_dict[num] = i  return None

小结:

  • 两数之和:考察了如何通过遍历数组两次来找到和为目标值的两个数。关键在于使用一个字典来存储已遍历过的数和它们的索引,以避免重复计算。

 2. 合并两个有序链表

题目描述

        将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例
输入:1->2->4, 1->3->4  
输出:1->2->3->4
class ListNode:  def __init__(self, val=0, next=None):  self.val = val  self.next = next  def mergeTwoLists(l1: ListNode, l2: ListNode) -> ListNode:  dummy = ListNode(0)  # 创建一个虚拟头节点作为新链表的头部  curr = dummy  # 当前节点指针,初始指向虚拟头节点  while l1 and l2:  # 当两个链表都有节点时,比较大小并添加到新链表中  if l1.val < l2.val:  curr.next = l1  # 当前节点指向l1,将l1向后移动一个节点,指向下一个节点  l1 = l1.next  # l1向后移动一个节点  else:  # 如果l2.val < l1.val,同理处理l2和l1的关系  curr.next = l2  # 当前节点指向l2,将l2向后移动一个节点,指向下一个节点  l2 = l2.next  # l2向后移动一个节点  curr = curr.next  # 当前节点向后移动一个节点,指向下一个节点(刚刚添加的节点)  curr.next = l1 if l1 else l2  # 如果其中一个链表已经遍历完,将另一个链表的剩余部分添加到新链表中  return dummy.next  # 返回新链表的头部(虚拟头节点的下一个节点)

小结:

  • 合并两个有序链表:这道题考察了如何通过比较节点值的大小来合并两个升序链表。我们维护一个当前节点指针,并根据链表节点的值来决定下一个节点。

 3. 最长回文子串(动态规划)

描述
给定一个字符串s,找到s中最长回文子串的长度。
示例
给定字符串为"babad",返回3,因为最长的回文子串是"aba"。

代码实现

def longestPalindromeSubseq(s: str) -> int:  n = len(s)  dp = [[0] * n for _ in range(n)]  for length in range(1, n+1):  for i in range(n-length+1):  j = i + length - 1  if s[i] == s[j]:  if length == 2:  dp[i][j] = 1  else:  dp[i][j] = dp[i+1][j-1] + 2  else:  dp[i][j] = max(dp[i+1][j], dp[i][j-1])  return dp[0][n-1]

解题思路
        动态规划是解决这个问题的有效方法。

        我们可以定义一个二维数组dp,其中dp[i][j]表示s中从索引i到索引j的子串是否为回文串。对于dp[i][j],如果s[i] == s[j]且dp[i+1][j-1]为true,那么dp[i][j]也为true。我们可以从长度为1的子串开始,逐渐增加子串的长度,直到达到整个字符串的长度。在每个阶段,我们只需要考虑以当前字符为中心的子串是否为回文串,并更新dp数组的值。最后,dp数组中的最大值即为所求的最长回文子串的长度。

小结:

  • 最长回文子串:这道题是关于动态规划的经典问题。我们使用一个二维数组dp来保存中间状态,并根据字符串的特性更新dp数组的值。最后返回dp数组中的最大值即可。

 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024美赛E题数学建模思路代码数据分享

2024 ICM Problem E: Sustainability of Property Insurance 本题要求选取不同大陆上经历极端天气的两个地区来为保险公司开发模型&#xff0c;本题的重点是找到尽可能多而全的数据&#xff0c;包括天气数据&#xff0c;经济数据&#xff0c;人口数据等。 模型选择&#xff1a…

洛谷-P4124题-手机号码-Java

题目 题目链接&#xff1a; https://www.luogu.com.cn/problem/P4124 分析 给定两个长度为11位的数字&#xff0c;代表两个区间 [L,R] 需要编写程序来计算出&#xff0c;这两个区间内满足要求的数字个数。这样的题一般来说就是数位dp题。首先我们可以根据容斥原理 [0,R]中满…

STM32--USART串口(1)串口协议

一、通信接口 全双工&#xff1a;通信双方能够同时进行双向通信&#xff1b; 半双工&#xff1a;通信双方能够进行双向通信&#xff0c;但不能同时通信&#xff1b; 单工&#xff1a;只能从一个设备到另一个设备&#xff1b; 同步&#xff1a;接收方可以在时钟信号的指引下进…

回溯法:回溯法通用模版汇总以及模版应用

从一个问题开始 给定两个整数 n 和 k&#xff0c;返回 1 ... n 中所有可能的 k 个数的组合。 示例: 输入: n 4, k 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4] ] 很容易想到 用两个for循环就可以解决。 如果n为100&#xff0c;k为50呢&#xff0c;那就50层for循…

LabVIEW直流电机转速检测与控制

研究了使用LabVIEW软件和ELVIS实验平台来检测和控制直流电机的转速。通过集成光电传感器和霍尔传感器&#xff0c;实现了对电机转速的精确测量和调节。 系统组成&#xff1a;系统由NI ELVIS实验平台、光电传感器、霍尔传感器和直流电机组成。通过这些硬件元件&#xff0c;系统…

day25打卡

day25打卡 216. 组合总和 III 画出决策树 递归出口&#xff1a;path.size() k子问题&#xff1a;从pos开始枚举每个数字剪枝&#xff1a;count 提前大于 n&#xff0c;返回即可时间复杂度&#xff1a;O(N * 2^N)&#xff0c;空间复杂度&#xff1a;O(N) class Solution { p…

前端JavaScript篇之JavaScript有哪些内置对象

目录 JavaScript有哪些内置对象常见的内置对象的简单描述和参考代码总结 JavaScript有哪些内置对象 JavaScript中常见的内置对象包括&#xff1a; Object&#xff1a;用于创建对象的构造函数&#xff0c;对象是键值对的集合&#xff0c;用于存储和传递数据。 Array&#xff1…

基于自适应支持向量机的matlab建模与仿真,不使用matlab的SVM工具箱函数

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ............................................................ figure; subplot(131); for …

MySQL默认的连接数151如何修改

在MySQL中修改 max_connections 的值可以通过以下几种方法进行&#xff1a; 1. 临时修改 可以通过MySQL命令行临时修改 max_connections 的值。这种修改直到下次MySQL服务重启时才会失效。要进行临时修改&#xff0c;可以使用以下命令&#xff1a; SET GLOBAL max_connectio…

24.Android中的列表--ListView

ListView 1.简单列表--ArrayAdapter <?xml version"1.0" encoding"utf-8"?> <ScrollView xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools&qu…

python计算两个DataFrame的指定两列中,相同的数据有多少

目的&#xff1a;查询数据1和数据2中&#xff0c;red与red列相同 并且blue与blue列相同的&#xff0c;情况有多少。 &#xff08;备注&#xff1a;两个数据中格式不一致&#xff0c;需要经过json提取等处理步骤&#xff09; 思路步骤&#xff1a; 1、读取数据1&#xff0c;筛选…

MongoDB的分片集群(一) : 基础知识

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 目录导读 1. 什么是MongoDB分片 2. MongoDB分片集群介绍 2.1 MongoDB分片集群架构 2.2 MongoDB分片集群优势 3. 分片键…