草庐IT

leetcode刷题之回文链表

全部标签

算法沉淀——双指针算法(leetcode真题剖析)

算法沉淀——双指针算法01.移动零02.复写零03.快乐数04.盛最多水的容器05.有效三角形的个数06.和为s的两个数字07.三数之和08.四数之和双指针算法(TwoPointerAlgorithm)是一种常用于数组(或链表)操作的算法技巧。它的核心思想是通过维护两个指针,在数组中高效地解决一些问题,这里的指针不一定是真实的指针,是一种抽象的概念,比如数组的下标,C++的迭代器等等。这两个指针可以分别指向数组的不同位置,也可以分别指向数组的开始和结束。常见的双指针算法有两种类型:快慢指针和左右指针。快慢指针:用于解决一些查找或判断问题,比如判断链表是否有环、找到链表的中间节点等。快指针每次移

【每日一题】5.LeetCode——环形链表

📚博客主页:爱敲代码的小杨.✨专栏:《JavaSE语法》❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️🙏小杨水平有限,欢迎各位大佬指点,相互学习进步!文章目录1.题目描述示例1:示例2:示例3:提示:2.思路3.代码1.题目描述给你一个链表的头节点head,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪next指针再次到达,则链表中存在环。为了表示给定链表中的环,评测系统内部使用整数pos来表示链表尾连接到链表中的位置(索引从0开始)。注意:pos不作为参数进行传递。仅仅是为了标识链表的实际情况。如果链表中存在环,则返回true。否则,返回false。示例1:

LeetCode 144. 94. 145. 二叉树的前序,中序,后续遍历(详解) ੭ ᐕ)੭*⁾⁾

目录144.二叉树的前序遍历一.TreeSize函数的实现:二. preOrderTree函数的实现:三.preorderTraversal函数的实现: 最后完整代码:94.二叉树的中序遍历: 145.二叉树的后续遍历:经过前面的二叉树的学习,现在让我们实操来练练手~如果对二叉树还不熟悉的小伙伴可以看看我的这篇博客~数据结构——二叉树(先序、中序、后序及层次四种遍历(C语言版))超详细~(✧∇✧)Q_Q-CSDN博客144.二叉树的前序遍历题目描述:题目让我们返回节点值的前序遍历,让我们一起看看题目所给的代码:  函数的定义与功能:1.定义一个TreeSize函数用于计算这颗数的节点个数2.p

LeetCode 热题 100 | 矩阵

目录1 73.矩阵置零2 54.螺旋矩阵3 48.旋转图像4 240.搜索二维矩阵II菜鸟做题第二周,语言是C++1 73.矩阵置零解题思路:遍历矩阵,寻找等于0的元素,记录对应的行和列将被记录的行的元素全部置0将被记录的列的元素全部置0classSolution{public:voidsetZeroes(vector>&matrix){intn=matrix.size(),m=matrix[0].size();unordered_setrow,col;//寻找0for(inti=0;i2 54.螺旋矩阵解题思路:定义right,down,left,up来标志四个方向根据不同的方向设置不同的坐

leetcode刷题(剑指offer) 240.搜索二维矩阵Ⅱ

240.搜索二维矩阵Ⅱ编写一个高效的算法来搜索*m*x*n*矩阵matrix中的一个目标值target。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。示例1:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=5输出:true示例2:输入:matrix=[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]],target=20输出

【随想录学习】——第十章 动态规划(多重背包+打家劫舍+股票+编辑距离+回文)

文章目录139.单词拆分1.dp含义2.递推3.初始化4.遍历顺序198.打家劫舍1.dp含义2.递推3.初始化4.遍历顺序213.打家劫舍Ⅱ337.打家劫舍Ⅲ121.买卖股票的最佳时机贪心算法动态规划1.dp含义2.递推3.初始化4.遍历顺序122.买卖股票的最佳时机Ⅱ123.买卖股票的最佳时机Ⅲ1.确定dp数组以及下标的含义2.递推公式dp[i][0]dp[i][1]:第一次持有dp[i][2]:第一次不持有dp[i][3]:第二次持有dp[i][4]:第二次不持有3.初始化188.买卖股票的最佳时机Ⅳ309.买卖股票的最佳时机含冷冻期**1.确定dp数组以及下标的含义**2.递推dp[i

【C语言编程之旅 6】刷题篇-for循环

第1题解析思路:两个循环进行控制外层循环控制打印多少行内部循环控制每行打印多少个表达式以及表达式内容,比较简单,具体参考代码#includeintmain(){ inti=0; //控制行数 for(i=1;i9;i++) { //打印每一行内容,每行有i个表达式 intj=0; for(j=1;ji;j++) { printf("%d*%d=%2d",i,j,i*j); } printf("\n"); } return0;}第2题解析思路:采用循环的方式输入一个数组使用max标记数组中的最大值,采用循环的方式依次获取数组中的每个元素,与max进行比较,如果arr[i]大于ma

【算法刷题分享】

算法刷题分享(一)动态规划——背包专题(二)贪心——区间专题(三)回溯(四)双指针问题(五)分治(六)贪心(一)动态规划——背包专题导语:动态规划是一种常用的算法思想,广泛应用于各类问题的求解中。而背包问题则是动态规划中最经典且常见的问题之一。背包问题涉及在给定容量的背包中选择物品以达到最优解的目标。本篇博客将专注于介绍和讨论与背包问题相关的动态规划算法。我们将探索不同类型的背包问题,并详细讲解其动态规划的解决思路。题目:01背包问题LeetCode416题目概述:01背包问题是最基础的背包问题之一。给定一组物品,每个物品有重量和价值,背包具有一定的容量,需要在不超过背包容量的前提下,选择物品

Java 8 中使用 Lambda 表达式和 Stream API 解决 LeetCode 的两数之和问题

Java8中使用Lambda表达式和StreamAPI解决LeetCode的两数之和问题当我们在面对一个数列,需要查找其中两个元素的和为给定目标值时,可以使用两数之和(TwoSum)问题来解决。这个问题在LeetCode上有很高的重要性和普遍性,在各种面试中也经常会被考察。最直接的方法是通过双重for循环来枚举所有可能的元素对,然后检查它们的和是否等于给定目标值。这个方法的时间复杂度是O(n^2),并不太适用于大型数据集。那么如何能够更快地解决这个问题呢?我们可以使用哈希表(HashTable)来降低时间复杂度。具体来说,我们可以建立一个从数组元素到其下标的映射,然后遍历一遍数组,对于每个元素

【C/C++笔试练习】二分查找、单链表插入、双向链表、栈的输出、循环队列、二叉树的遍历、二叉树的性质、哈希表、稳定排序、汽水瓶、 查找两个字符串a,b中的最长公共子串

文章目录C/C++笔试练习选择部分(1)二分查找(2)单链表插入(3)双向链表(4)栈的输出(5)循环队列(6)二叉树的遍历(7)二叉树的性质(8)哈希表(9)稳定排序编程题day19汽水瓶查找两个字符串a,b中的最长公共子串C/C++笔试练习选择部分(1)二分查找  二分查找的时间复杂度()  A.O(N*log(N))  B.O(N)  C.O(log(N))  D.O(N^2)  答案:C  二分查找是一种在有序数组中查找特定元素的搜索算法。它的工作原理是将数组分为两半,比较中间元素与目标值,如果目标值与中间元素相等,则查找成功;如果目标值小于中间元素,则在左半部分数组中继续查找;如果目