草庐IT

Leetcode6

全部标签

力扣每日一道系列 --- 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.既然数组是存放子链表的,那准确来说数组元素是链表某一节点

LeetCode 面试题 08.02. 迷路的机器人

文章目录一、题目二、C#题解一、题目  设想有个机器人坐在一个网格的左上角,网格r行c列。机器人只能向下或向右移动,但不能走到一些被禁止的网格(有障碍物)。设计一种算法,寻找机器人从左上角移动到右下角的路径。  网格中的障碍物和空位置分别用1和0来表示。  返回一条可行的路径,路径由经过的网格的行号和列号组成。左上角为0行0列。如果没有可行的路径,返回空数组。示例1:输入:[[0,0,0],[0,1,0],[0,0,0]]输出:[[0,0],[0,1],[0,2],[1,2],[2,2]]解释:输入中标粗的位置即为输出表示的路径,即0行0列(左上角)->0行1列->0行2列->1行2列->2行

Leetcode—765.情侣牵手【困难】

2023每日刷题(二十七)Leetcode—765.情侣牵手并查集+置换环思路参考自ylb实现代码classSolution{public:intminSwapsCouples(vectorint>&row){intn=row.size();intlen=n/2;vectorint>p(len);iota(p.begin(),p.end(),0);functionint(int)>find=[&](constint&x){if(x!=p[x]){p[x]=find(p[x]);}returnp[x];};for(inti=0;in;i+=2){intleft=row[i]/2;intright

实战Leetcode(四)

Practicemakesperfect!实战一:这个题由于我们不知道两个链表的长度我们也不知道它是否有相交的节点,所以我们的方法是先求出两个链表的长度,长度长的先走相差的步数,使得两个链表处于同一起点,两个链表在同时走,如果两个链表节点的地址相等就存在相交的节点,在放回第一个节点就可以了。structListNode*getIntersectionNode(structListNode*headA,structListNode*headB){structListNode*curA=headA;structListNode*curB=headB;intlenA=1;intlenB=1;whil

Leetcode实战

我们今天来利用这段时间的学习实操下我们的oj题。intremoveElement(int*nums,intnumsSize,intval){intdst=0;intsrc=0;while(srcnumsSize){if(nums[src]!=val){nums[dst++]=nums[src++];}elsesrc++;}returndst;}我们这里用用两个下标,src来移动,如果val等于我们的nums[src],我们就src++找到下一个位置,如果不相等我们就将下标src的值赋给dst。intremoveDuplicates(int*nums,intnumsSize){intdst=0;

leetcode-链表经典题

 1.反转单链表206. 反转链表https://leetcode.cn/problems/reverse-linked-list/这里我们使用创建一个变量cur来遍历原链表,再创建一个新节点newnode,首先使用一个循环来遍历原链表,cur为NULL是循环结束,每次进入循环将cur的下一个节点赋给tail,然后将cur取下来头插,第一次头插的节点的next置为NULL,也就是cur->next=newnode,然后将cur这个节点赋给newnode,在新链表上相当于往左走一步,newnode=cur,然后cur在旧链表上往右走,cur=tail。循环结束后cur就为NULL了,也就是全部完

[LeetCode]-225. 用队列实现栈-232. 用栈实现队列

目录225.用队列实现栈题目思路 代码232.用栈实现队列题目 思路代码225.用队列实现栈225.用队列实现栈-力扣(LeetCode)https://leetcode.cn/problems/implement-stack-using-queues/description/题目请你仅使用两个队列实现一个后入先出(LIFO)的栈,并支持普通栈的全部四种操作(push、top、pop 和 empty)。实现 MyStack 类:voidpush(intx) 将元素x压入栈顶。intpop() 移除并返回栈顶元素。inttop() 返回栈顶元素。booleanempty() 如果栈是空的,返回 

算法leetcode|88. 合并两个有序数组(rust重拳出击)

文章目录88.合并两个有序数组:样例1:样例2:样例3:提示:分析:题解:rust:go:c++:python:java:88.合并两个有序数组:给你两个按非递减顺序排列的整数数组nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1的初始长度为m+n,其中前m个元素表示应合并的元素,后n个元素为0,应忽略。nums2的长度为n。样例1:输入: nums1=[1,2,3,0,0,0],m=3,nu