【leetcode】题解
文章平均质量分 66
分享题目解析
阿明6
加油!
展开
-
Leetcode: 203. 移除链表元素
这里free(cur) 会把第一个结点的内存空间释放返回给操作系统,pre->next = next;即此时的 pre 是NULL ,cur指向的是head(第一个结点),删去结点(free(cur))。先让cur指向第一个结点,遍历结点,把不等于val的值给放到新的链表里。这样的话就要考虑如何找被删除元素的前一个结点,和被删除元素的下一个结点。因为 要删除的元素可能不仅仅是一个,也有可能是多个。前提是:删去的不是第一个结点的情况下。遍历链表,删除指定元素(val)给你一个链表的头节点。原创 2023-12-19 15:22:13 · 3396 阅读 · 41 评论 -
Leetcode:876. 链表的中间结点 【详解】
head难度:简单由题目可以知道,题目要求返回中间的结点。原创 2023-11-10 15:53:21 · 176 阅读 · 6 评论 -
Leetcode:【189. 轮转数组】
给定一个整数数组nums,将数组中的元素向右轮转k个位置,其中k是非负数难度:中等向右轮转 1 步:向右轮转 2 步:向右轮转 3 步:向右轮转 1 步: [99,-1,-100,3]向右轮转 2 步: [3,99,-1,-100]原创 2023-10-24 20:55:45 · 288 阅读 · 27 评论 -
Leetcode:349. 两个数组的交集【题解超详细】
下方代码的方法就是 用两层for循环来比较nums1和nums2两个数组中相同的元素,然后把相同的元素,通过创建一个临时数组,存放与下标与之对应的元素 ( 前提是先把来临时数组需要用到元素初始化为-1 ,原因是方便以后的数组遍历)。接着用两层for循环进行判断两个数组是否相同的元素(即数组元素的交集),在内层的for循环里面使用一个if语句进行判断,如果找到两个数组元素的交集我们就先把元素放到临时数组(tmp[])相应的位置。接着就是返回 返回数组的元素的个数 和 返回 返回数组首元素的地址。原创 2023-09-04 08:52:05 · 2194 阅读 · 64 评论 -
Leetcode: 1. 两数之和 【题解超详细】
第一层循环 就是从数组的下标 0 开始 (即第一个元素开始 与 第二层的for的循环的第二个元素进行相加 来判断 是否等于目标值 ) 找到 两个数的下标 相加后等于目标值 注意返回数组的大小 ,还有就是返回数组。第一层for循环我们就是 按照数组下标进行来 [0, numsSize-1] 其实就是遍历 numsSize个元素, i的取值范围就是 [ 0 , numsSize-1 ] 这样就可以进行遍历整个数组的元素。这样自就可以让 第一个元素 开始 依次和后面的元素相加进行判断。原创 2023-09-01 18:09:46 · 2153 阅读 · 50 评论 -
Leetcode: 645.错误的集合 题解【超详细】
在这里求的缺失的元素是,简单思路就是 可以用一个临时数组(数组中的全部元素置0)来 把[ 1, n ] 这些数组元素存放到相应的数组中(就是与相应的数组下标与之对应)【例如】 元素 1 ,存放到临时数组 下标 1 中;题目是要求我们返回数组的(即一个重复的元素,一个缺失的元素)。然后在 numsSize大小的数组中进行遍历 其中那个元素为零(因为只有1个元素是缺失的)就是缺失的数组。不幸的是,因为数据错误,导致集合里面某一个数字复制了成了集合里面的另外一个数字的值,导致集合。这里用的就是两层for循环,原创 2023-09-16 09:46:43 · 1241 阅读 · 60 评论 -
Leetcode:【169. 多数元素】
那就大混战呗,最差所有人都联合起来对付你(对应你每次选择作为计数器的数都是众数),或者其他国家也会相互攻击(会选择其他数作为计数器的数),但是只要你们不要内斗,最后肯定你赢。其实可以 在nums数组中 元素可以这样区分 友军(相同元素),敌军(不同元素)。尝试设计时间复杂度为 O(n)、空间复杂度为 O(1) 的算法解决此问题。这里采用的 进阶的做法(时间复杂度为 O(n)、空间复杂度为 O(1) )你可以假设数组是非空的,并且给定的数组总是存在多数元素。,返回其中的多数元素。简单地介绍一下摩尔投票法。原创 2023-09-07 16:35:57 · 801 阅读 · 41 评论 -
Leetcode:【485. 最大连续 1 的个数】
在二进制数组中,元素只有 0 和 1 ,返回得是连续1最多得个数,此时回想到 用一个变量来记录每一次得连续1的个数(count_1),再用另一个变量(max1)来记录其中连续1个数中 的最大的数。开头的两位和最后的三位都是连续 1 ,所以最大连续 1 的个数是 3., 计算其中最大连续。原创 2023-09-26 11:14:20 · 554 阅读 · 24 评论 -
Leetcode:【448. 找到所有数组中消失的数字】题解
题目意思是再在有 n 个元素的数组中,找出[1,n]中没有出现的数组,其中 n 个元素中,可能会出现重复的元素,于是 我们就可以 再次创建一个临时数组tmp(每个元素置0),存放相应的元素来取消重复的元素。然后遍历整个数组,如果元素为零,则为没有出现在nums中的数字。这里的arr数组用于返回数组,tmp 临时数组主要用来消除重复的元素,主要思路。通过对循环每一个数组元素,对其进行取模运算,再将其放入对应的下标的数组中。开始遍历数组,找出[1,n] 中没有出现在nums数组中的数字。原创 2023-08-30 07:47:22 · 1249 阅读 · 51 评论 -
Leetcode:238. 除自身以外数组的乘积【题解超详细】
由于该题不能使用除法 所以参考题解写一个左右乘积列表的方法 创建两个新的数组a,b 一个用于记录从左到右的乘积(类似于动态规划的思想)a 另一个记录从右到左的乘积 b(注意b是从右到左进行累乘) 而a的最左端为1,b的最右端为1 如此在结尾的时候只需要a*b即可 举例, ans[0]=a[0]*b[0] a[0]=1 b[0]=除了nums[0]以外所有元素的乘积。这里我们以数组 [1,2,3,4] , 这里我们需要注意的是 数组的第一个元素的前缀乘积和数组的最后一个元素的后缀乘积是1。原创 2023-08-27 09:13:04 · 2401 阅读 · 51 评论