草庐IT

leetCode

全部标签

LeetCode题:83删除排序链表中的重复元素 141环形链表

83删除排序链表中的重复元素题目内容给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 示例1: 输入:head=[1,1,2]输出:[1,2]示例2: 输入:head=[1,1,2,3,3]输出:[1,2,3] 思路:非递归法:这题很简单,只需遍历一遍有序链表,判断当前节点和下一个节点是否相同,如果相同,就跳过下一个节点,到下下一个节点,如图:时间复杂度:O(N)递归法:如图我们从图可以看到,1和1相等,那么我们头结点的next指向就是2了,那么这就出现了一个新的链表,我们就要删除这新的节点链表中的重复元素,依次类推,这不就是递归吗?时

Leetcode—421.数组中两个数的最大异或值【中等】

2023每日刷题(十九)Leetcode—421.数组中两个数的最大异或值算法思想参考自灵茶山艾府实现代码classSolution{public:intfindMaximumXOR(vectorint>&nums){intmaxValue=*max_element(nums.begin(),nums.end());inthighIdx=maxValue?31-__builtin_clz(maxValue):-1;intans=0;intmask=0;unordered_setint>pre;for(inti=highIdx;i>=0;i--){mask|=1i;intnew_ans=ans|

【数据结构 | 链表】leetcode 2. 两数相加

个人主页:兜里游客棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里游客棉花糖原创收录于专栏【LeetCode】原题链接:点击直接跳转到该题目目录题目描述解题代码题目描述给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一位数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字0之外,这两个数都不会以0开头。示例1:输入:l1=[2,4,3],l2=[5,6,4]输出:[7,0,8]解释:342+465=807.示例2:输入:l1=[0],l2=[0]输出:[0]示例3:输入:l1=[9,9,9,9,9,9,9],l2=[9,9

【LeetCode刷题日志】160.相交链表

🎈个人主页:库库的里昂 🎐C/C++领域新星创作者 🎉欢迎👍点赞✍评论⭐收藏✨收录专栏:LeetCode刷题日志🤝希望作者的文章能对你有所帮助,有不足的地方请在评论区留言指正,大家一起学习交流!🤗目录1.题目描述2.解题思路+代码实现方法:双指针思路及算法:代码实现:1.题目描述OJ链接 【leetcode 题号:160.相交链表】【难度:简单】给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。图示两个链表在节点 c1 开始相交:题目数据 保证 整个链式结构中不存在环。注意,函数返回结果后,链表必须 保持

LeetCode 27.移除元素

文章目录💡题目分析💡解题思路🚩思路1:暴力求解---遍历🔔接口源码:🚩思路2:空间换时间🔔接口源码:🚩思路3:双指针(快慢指针)🔔接口源码:题目链接👉LeetCode27.移除元素👈💡题目分析给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。💡解题思路🚩思路1:暴力求解—遍历直接一个循环遍历nums数组每个元素;再对每个元素判断是否和val相等;相等就把后面的元素往前挪动覆盖它,已达到删除val的目的;🚨注意:移

【算法|前缀和系列No.5】leetcode1314. 矩阵区域和

个人主页:兜里有颗棉花糖欢迎点赞👍收藏✨留言✉加关注💓本文由兜里有颗棉花糖原创收录于专栏【手撕算法系列专栏】【Leetcode】🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望对大家有所帮助🍓希望我们一起努力、成长,共同进步。点击直接跳转到该题目目录1️⃣题目描述2️⃣题目解析3️⃣解题代码1️⃣题目描述给你一个mxn的矩阵mat和一个整数k,请你返回一个矩阵answer,其中每个answer[i][j]是所有满足下述条件的元素mat[r][c]的和:i-kj-k(r,c)在矩阵内示例1:输入:mat=[[1,2,3],[4,5,6],[7,8,9]],k=1输出:[[12,2

LeetCode | 面试题 02.02. 返回倒数第 k 个节点

LeetCode|面试题02.02.返回倒数第k个节点OJ链接思路:定义两个快慢指针,让快指针先提前走k个节点,然后再让慢结点和快结点一起走,当快指针==NULL时,慢指针就是倒数第k个节点代码如下:intkthToLast(structListNode*head,intk){structListNode*slow,*fast;slow=fast=head;while(k--){if(fast==NULL)returnNULL;fast=fast->next;}while(fast!=NULL){slow=slow->next;fast=fast->next;}returnslow->val;

力扣每日一道系列 --- LeetCode 138. 随机链表的复制

📷江池俊:个人主页🔥个人专栏:✅数据结构探索✅LeetCode每日一道🌅有航道的人,再渺小也不会迷途。LeetCode138.随机链表的复制给你一个长度为n的链表,每个节点包含一个额外增加的随机指针random,该指针可以指向链表中的任何节点或空节点。构造这个链表的深拷贝。深拷贝应该正好由n个全新节点组成,其中每个新节点的值都设为其对应的原节点的值。新节点的next指针和random指针也都应指向复制链表中的新节点,并使原链表和复制链表中的这些指针能够表示相同的链表状态。复制链表中的指针都不应指向原链表中的节点。例如,如果原链表中有X和Y两个节点,其中X.random-->Y。那么在复制链表中

【LeetCode力扣】70. 爬楼梯 (简单)

目录1、题目介绍2、解题2.1、解题思路2.2、图解说明2.3、解题代码 (1)滚动数组(用的是c语言)(2)递归(用的是c语言)1、题目介绍原题链接:70.爬楼梯-力扣(LeetCode)示例1:输入:n=2输出:2解释:有两种方法可以爬到楼顶。1.1阶+1阶2.2阶示例2:输入:n=3输出:3解释:有三种方法可以爬到楼顶。1.1阶+1阶+1阶2.1阶+2阶3.2阶+1阶提示:12、解题2.1、解题思路我们可以用F(n)来表示爬到第n个阶梯的总方案数,因为一次可以上1或2个阶梯,所以最后一步可能跨了1个台阶,也可能跨了2个台阶;意思就是最后一步可能是从第n-1个台阶跨到了第n个台阶,或者是从

LeetCode刷题之分隔链表(图解➕代码)

    首先直接进入主题,题目链接🔗力扣(LeetCode)官网-全球极客挚爱的技术成长平台源代码在最后,有更优解的朋友欢迎在评论里指导我一番!1.题目分析通过题目分析得出结论:    1.将链表分为k个子链表    2.用一个数组存放这k个子链表,数组的长度就是k    3.任意两个子链表的长度差不能超过1,也就是要么子链表长度都是2或者别的数字,要么子链表之间可以是2,2,2,1或者3,3,2等。子链表的长度跟链表的长度和k有关。    4.子链表存放到数组的顺序不能改变,也就是说链表是从头开始分隔的,依次再存放到数组里。    5.既然数组是存放子链表的,那准确来说数组元素是链表某一节点