2024.5.7 —— LeetCode 高频题复盘

目录

  • 136. 只出现一次的数字
  • LCR 155. 将二叉搜索树转化为排序的双向链表
  • 11. 盛最多水的容器
  • 498. 对角线遍历
  • 402. 移掉 K 位数字
  • 归并排序
  • 958. 二叉树的完全性检验
  • 123. 买卖股票的最佳时机 III
  • 79. 单词搜索
  • 排序奇升偶降链表

136. 只出现一次的数字


题目链接

Python

方法一

class Solution:def singleNumber(self, nums: List[int]) -> int:ans=nums[0]for i in range(1,len(nums)):ans=nums[i]^ansreturn ans

核心思想: 一个数被另一个数异或两次,该数本身不变。

方法二

class Solution:def singleNumber(self, nums: List[int]) -> int:return sum(set(nums))*2-sum(nums)

LCR 155. 将二叉搜索树转化为排序的双向链表


题目链接

Python

"""
# Definition for a Node.
class Node:def __init__(self, val, left=None, right=None):self.val = valself.left = leftself.right = right
"""
class Solution:def treeToDoublyList(self, root: 'Node') -> 'Node':# 1.二叉搜索树——>排序的双向链表(中序遍历)def dfs(cur):if not cur:returndfs(cur.left)# 2. 双向链表(相邻节点)if self.pre:self.pre.right=curcur.left=self.preelse:self.head=curself.pre=curdfs(cur.right)if not root:returnself.pre=Nonedfs(root)# 3. 循环链表(首尾节点)self.head.left=self.preself.pre.right=self.headreturn self.head

11. 盛最多水的容器


题目链接

Python

class Solution:def maxArea(self, height: List[int]) -> int:res = 0i = 0j = len(height) - 1while i < j:area = (j - i) * min(height[i], height[j])res = max(res, area)if height[i] < height[j]:i += 1else:j -= 1return res

498. 对角线遍历


题目链接

Python

class Solution:def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:m,n,ans=len(mat),len(mat[0]),[]for k in range(m+n-1):# 偶对角线(左下到右上)if k%2==0:ans+=[mat[x][k-x] for x in range(min(k,m-1),max(0,k-n+1)-1,-1)]# 奇对角线(右上到左下)else:ans+=[mat[x][k-x] for x in range(max(0,k-n+1),min(k,m-1)+1)]return ans

对角线上横纵坐标和为定值 k 。

402. 移掉 K 位数字


题目链接

Python

class Solution:def removeKdigits(self, num: str, k: int) -> str:stack=[]remain=len(num)-k # 不可少,例如输入为"9",1或者"112",1for n in num:while k and stack and stack[-1]>n:stack.pop()k-=1stack.append(n)return "".join(stack[:remain]).lstrip("0") or "0"

归并排序


Python

class Solution:# 合并两个有序数组def merge(self,left,right):merged=[]i=j=0while i<len(left) and j<len(right):if left[i]<=right[j]:merged.append(left[i])i+=1else:merged.append(right[j])j+=1while i<len(left):merged.append(left[i])i+=1while j<len(right):merged.append(right[j])j+=1return merged# 划分左右数组def sortArray(self, nums: List[int]) -> List[int]:if len(nums)<=1:return numsmid=len(nums)//2left=self.sortArray(nums[:mid])right=self.sortArray(nums[mid:])return self.merge(left,right)

958. 二叉树的完全性检验


题目链接

Python

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:def isCompleteTree(self, root: Optional[TreeNode]) -> bool:# 设根节点编号为1,树中所有节点的编号按照广度优先搜索顺序正好是升序,# 我们检测编号序列是否为无间隔的 1, 2, 3, …,事实上,我们只需要检查最后一个编号是否正确,因为最后一个编号的值最大。nodes=[[root,1]]i=0while i<len(nodes):node,v=nodes[i]i+=1if node:nodes.append([node.left,2*v])nodes.append([node.right,2*v+1])return nodes[-1][1]==len(nodes)

123. 买卖股票的最佳时机 III


题目链接

Python

class Solution:def maxProfit(self, prices: List[int]) -> int:# dp[i][0]不操作# dp[i][1]第一次持有股票的最大金额 # dp[i][2]第一次不持有股票的最大金额# dp[i][3]第二次持有股票的最大金额 # dp[i][4]第二次不持有股票的最大金额dp=[[0]*5 for _ in range(len(prices))]dp[0][1]=-prices[0]dp[0][3]=-prices[0]for i in range(1,len(prices)):dp[i][0]=dp[i-1][0]dp[i][1]=max(dp[i-1][1],dp[i-1][0]-prices[i])dp[i][2]=max(dp[i-1][2],dp[i-1][1]+prices[i])dp[i][3]=max(dp[i-1][3],dp[i-1][2]-prices[i])dp[i][4]=max(dp[i-1][4],dp[i-1][3]+prices[i])return dp[-1][-1]

79. 单词搜索


题目链接

Python

class Solution:def exist(self, board: List[List[str]], word: str) -> bool:def dfs(i,j,k):# 不满足条件的进行剪枝if not 0<=i<m or not 0<=j<n or visited[i][j]==True or board[i][j]!=word[k]:return False# 匹配到单词最后一个字符if k==len(word)-1:return Truevisited[i][j]=Truefor d in directions:ni,nj=i+d[0],j+d[1]if dfs(ni,nj,k+1):return Truevisited[i][j]=Falsem,n=len(board),len(board[0])directions = [(0, 1), (0, -1), (1, 0), (-1, 0)]visited=[[False for _ in range(n)] for _ in range(m)]for i in range(m):for j in range(n):if dfs(i,j,0):return Truereturn False

排序奇升偶降链表


题目链接

在做该题之前建议先做 206. 反转链表、21. 合并两个有序链表、328. 奇偶链表这三题。

Python

# Definition for singly-linked list.
# class ListNode:
#     def __init__(self, val=0, next=None):
#         self.val = val
#         self.next = next
class Solution:    def sortOddEvenList(self,head):     if not head or not head.next:      return head        oddList,evenList = self.partition(head)        evenList = self.reverse(evenList)        return self.merge(oddList,evenList)    def partition(self, head):        evenHead = head.next        odd, even = head, evenHead        while even and even.next:            odd.next = even.next            odd = odd.next            even.next = odd.next            even = even.next        odd.next = None        return [head,evenHead] def reverse(self, head):pre=Nonecur=headwhile cur:temp=cur.nextcur.next=prepre=curcur=tempreturn predef merge(self, list1, list2):if not list1:return list2if not list2:return list1if list1.val<list2.val:list1.next=self.merge(list1.next,list2)return list1else:list2.next=self.merge(list2.next,list1)return list2

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

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

相关文章

(1)探索 SpringAI - 基本概述

人工智能简介 A system is ability to correctly interpret external data, to learn from such data, and to use those learnings to achieve specific goals and tasks through flexible adaptation. 翻译&#xff1a;系统正确解释外部数据的能力&#xff0c;从这些数据中学…

《武林秘籍》——闪侠惠递如何让消费者寄快递更安心!

现如今&#xff0c;网上下单寄快递的便利性让众多人享受到了电商物流飞速发展带来的红利性。今天小编直接介绍一款寄快递特别省钱的利器&#xff0c;就是利用闪侠惠递来寄快递。闪侠惠递寄快递&#xff0c;真正的实现了便宜寄快递发物流的便捷性&#xff0c;开创了低价发快递的…

蒙特卡洛求PI(抛点法)TypeScript实现

解决node先console.log不能用 pnpm install -D tslib types/nodetsconfig.json {"compilerOptions": {"target": "es2020","module": "commonjs","lib": ["es2020"],"sourceMap": true,&qu…

快速排序应用

题目描述 著名的快速排序算法里有一个经典的划分过程:通常采用某种方法取一个元素作为主元,通过交换,把比主元小的元素放到它的左边,比主元大的元素放到它的右边。 给定一个划分后的正整数序列,请问有多少个元素可能是划分过程中选取的主元? 并按升序输出这些主元。 解…

Baidu Comate智能编码助手:提升软件生产力的高效工具使用教程

目录 一、前言 二、Comate助手概览 三、核心功能详解 智能推荐与自动补全 生成单元测试 代码注释生成 四、使用场景与优势 五、总结与展望 一、前言 随着信息技术的飞速发展&#xff0c;编程已经成为许多行业不可或缺的一部分。然而&#xff0c;编程过程中的繁琐和重复…

three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析

1. three.js 中 meshbasic.glsl 文件中的片源着色器的主函数解析 他的具体代码如下 void main() {#include <uv_vertex>#include <color_vertex>#include <morphcolor_vertex>#if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )#include <beginno…

【linux软件基础知识】-死锁问题

死锁问题 当两个或多个线程由于每个线程都在等待另一个线程持有的资源而无法继续时,就会发生死锁 如下图所示, 在线程 1 中,代码持有了 L1 上的锁,然后尝试获取 L2 上的锁。 在线程 2 中,代码持有了 L2 上的锁,然后尝试获取 L1 上的锁。 在这种情况下,线程 1 已获取 L…

雷达通信一体化(含WCSP2023会议论文集学习)

雷达通信一体化&#xff0c;又称雷达通信融合&#xff08;RADCOM&#xff09;&#xff0c;是一种新兴的技术&#xff0c;它将雷达&#xff08;通常用于探测和跟踪目标&#xff09;和无线通信&#xff08;用于传输信息&#xff09;的功能结合在一起。这种融合技术的主要目标是提…

第一天复习Qt文件读取

Qt文件操作&#xff1a; 1、QFile QTextStream操作文件案例&#xff1a; 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度&#xff0c;如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…

怎么解决端口被占用

目录 一、引言 二、解决方法 一、引言 最近用vscode写网页&#xff0c;老是遇见端口被占用&#xff0c;报错如下&#xff1a; listen tcp :8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted. 二、解决方法 1.换…

渗透之sql注入实战2(二次注入)

目录 平台地址&#xff1a; 开始&#xff1a; 方法1&#xff1a; 方法二 找提示 这里存在一个文件包含&#xff08;file&#xff09;。 爆源码 index.php源码 confirm.php源码&#xff1a; search.php源码&#xff1a; change.php源码&#xff1a; delete.php源码&…

【vue+el-upload】当action=“#“,代表不使用默认上传,使用自定义上传,http-request获取文件流

el-upload有多种上传行为&#xff1a; 1、立即上传&#xff1a; 当 action 属性被赋予一个有效的 URL 时&#xff0c;一旦用户选择了文件&#xff0c;el-upload 组件会立即自动将文件上传到指定的服务器地址。 2、不立即上传&#xff08;自定义触发&#xff09;&#xff1a; 如…

网贷大数据查询要怎么保证准确性?

相信现在不少人都听说过什么是网贷大数据&#xff0c;但还有很多人都会将它跟征信混为一谈&#xff0c;其实两者有本质上的区别&#xff0c;那网贷大数据查询要怎么保证准确性呢?本文将为大家总结几点&#xff0c;感兴趣的朋友不妨去看看。 想要保证网贷大数据查询的准确度&am…

【第13章】spring-mvc之validator

文章目录 前言一、准备1. 引入库2. add.jsp3. show.jsp 二、代码部分1.实体类2. 控制器类3. 效果4. 展示 总结 前言 【第20章】spring-validator 虽然前面已经在spring介绍过&#xff0c;但是为了保证代码可用&#xff0c;还是会从头讲到尾&#xff0c;尽量把关键点列出来讲给…

vue3实现电子签名的方法

vue3实现电子签名且对电子签名可进行修改画笔粗细、画笔颜色、撤销、清屏、保存等功能。 实现效果&#xff1a;查看源码 第一种&#xff1a;通过canvas <div class"signaturePad-Box w100 h100 flex-center"><el-space class"mb10" size"…

【大模型认识】警惕AI幻觉,利用插件+微调来增强GPT模型

文章目录 一. 大模型的局限1. 大模型不会计算2. 甚至明目张胆的欺骗 二. 使用插件和微调来增强GPT模型1. 模型的局限性2. 插件来增强大模型的能力3. 微调技术-提高特定任务的准确性 一. 大模型的局限 1. 大模型不会计算 LLM根据给定的输入提示词逐个预测下一个词&#xff08;…

【人工智能基础】RNN实验

一、RNN特性 权重共享 wordi weight bais 持久记忆单元 wordi weightword baisword hi weighth baish 二、公式化表达 ht f(ht - 1, xt) ht tanh(Whhht - 1 Wxhxt) yt Whyht 三、RNN网络正弦波波形预测 环境准备 import numpy as np import torch from tor…

LeetCode-hot100题解—Day7

原题链接&#xff1a;力扣热题-HOT100 我把刷题的顺序调整了一下&#xff0c;所以可以根据题号进行参考&#xff0c;题号和力扣上时对应的&#xff0c;那么接下来就开始刷题之旅吧~ 1-8题见LeetCode-hot100题解—Day1 9-16题见LeetCode-hot100题解—Day2 17-24题见LeetCode-hot…

面试 Java 基础八股文十问十答第二十九期

面试 Java 基础八股文十问十答第二十九期 作者&#xff1a;程序员小白条&#xff0c;个人博客 相信看了本文后&#xff0c;对你的面试是有一定帮助的&#xff01;关注专栏后就能收到持续更新&#xff01; ⭐点赞⭐收藏⭐不迷路&#xff01;⭐ 1&#xff09;类加载过程 类加载…

OpenNJet产品体验-手把手在Ubuntu20.04系统从零部署到应用OpenNJet

目录 一、引言 二、OpenNJet产品安装 2.1下载OpenNJet安装包 2.2安装OpenNJet V2.0.1 ​2.3快速启动并测试OpenNJet 三、OpenNJet产品应用体验 3.1配置OpenNJet 3.2 部署 Web 应用程序 3.3启动 NJet 3.4访问 Web 应用程序 四、总结 一、引言 OpenNJet应用引擎是高性…